2017年04月25日

全角英数、半角カッコ、半角%を変更するWordマクロ

英日翻訳でよく実行する、全角英数を半角英数に、半角カッコを全角カッコに、半角%を全角%に変更するWordマクロ。
実際に使ってみて、この3つの作業をすべて行うと支障が出るケースもあるので、全角英数と半角カッコだけ、全角英数と半角%だけ、全角英数だけも選べるようにした。
変更した箇所は黄色でハイライトされ、変更した箇所数も表示されるので、どこが変更されたか、やらんでもいい変更がされていないか確認できる。

=====ここから====
'
'全角英数字から半角英数字へ、半角カッコか全角カッコへ、半角%から全角%の変更を、インプットで選んで行い、変換箇所を黄色でハイライトし、変更箇所数をメッセージで出す

Dim myRange As Range
Dim changeNumber As Integer
Dim varNumber As Variant
Dim messageContents As String

'作業内容を選択する
Do

varNumber = InputBox("変換する文字種の番号を入力してください" & vbCr _
& "1:全角英数字、半角カッコ、半角%" & vbCr _
& "2:全角英数字、半角カッコ" & vbCr _
& "3:全角英数、半角%" & vbCr _
& "4:全角英数のみ")

If varNumber > 0 And varNumber <= 4 Then Exit Do

'入力された内容が不適切な場合はメニューを再表示
Loop

'変更箇所を数える変数を0にする。
changeNumber = 0

Set myRange = ActiveDocument.Range(0, 0)

'全角英数を探して半角に変更
With myRange.Find
.Text = "[0-9A-Za-z]{1,}"
.MatchWildcards = True

Do While .Execute = True
myRange.CharacterWidth = wdWidthHalfWidth
myRange.HighlightColorIndex = wdYellow
myRange.Collapse wdCollapseEnd

changeNumber = changeNumber + 1

Loop
End With

'全角英数のみの場合、これ以降の変更を行わずに終了
If varNumber = 4 Then GoTo Line1

'全角英数と%の場合、半角カッコの変更を行わずにLine2へ飛ぶ
If varNumber = 3 Then GoTo Line2

Set myRange = ActiveDocument.Range(0, 0)

'半角のカッコを全角に変更
With myRange.Find
.Text = "[)(]{1,}"
.MatchByte = True
.MatchWildcards = True

Do While .Execute = True
myRange.CharacterWidth = wdWidthFullWidth
myRange.HighlightColorIndex = wdYellow
myRange.Collapse wdCollapseEnd

changeNumber = changeNumber + 1

Loop
End With

Line2:

'全角英数と半角カッコのみの場合、以下の変更を行わずに終了
If varNumber = 2 Then GoTo Line1

Set myRange = ActiveDocument.Range(0, 0)

'半角の%を全角の%に変更
With myRange.Find
.Text = "%"
.MatchByte = True
.MatchWildcards = True

Do While .Execute = True
myRange.CharacterWidth = wdWidthFullWidth
myRange.HighlightColorIndex = wdYellow
myRange.Collapse wdCollapseEnd

changeNumber = changeNumber + 1

Loop
End With

Selection.Find.Execute Replace:=wdReplaceAll

Line1:

Set myRange = Nothing

'変更した箇所の数をメッセージで表示

'変更箇所がない場合
If changeNumber = 0 Then
MsgBox "変更箇所はありませんでした"
Else

'選択に応じた作業内容をメッセージに反映
Select Case varNumber
Case 1
messageContents = "全角英数、半角カッコ、半角%"
Case 2
messageContents = "全角英数と半角カッコ"
CAse 3
messageContents = "全角閣英数と半角%"
Caes 4
messageContents = "全角英数"
End Select

MsgBox messageContents & "の変更は" & changeNumber & "カ所でした"

End If
====ここまで=====
posted by 完治 at 08:25| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年10月25日

Wordの丸数字1から50までを検索してハイライトするマクロ

先日、Wordの丸数字1から35までを検索してハイライトするマクロを作ったのだけれど、今日、40まで検索してハイライトする必要性ができたので、36から50の部分を新たに追加。
スマートじゃなくて、ゴリゴリやるマクロなので、美しい書き方があったら、教えてください。

=====ここからマクロ====

'
'丸数字をハイライトするためのマクロ
'
'
'ユニコードの入れ物の定義
Dim Word1 As Long

'
'スピードを上げるため画面更新を停止
Application.ScreenUpdating = False

'カーソルをページ先頭に移動
Selection.HomeKey unit:=wdStory

'丸数字(@〜S)を検索して黄色ハイライト
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[@-S]"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchByte = False
.MatchWildcards = True
Do While .Execute = True
With Selection
.Range.HighlightColorIndex = wdYellow
.Collapse direction:=wdCollapseEnd
End With
Loop
End With

'丸数字の21から35を検索して黄色ハイライト
'最初に検索する丸数字21のユニコード
Word1 = &H3251&

'丸数字35まで繰り返すループ
Do While Word1 < &H3261&

Selection.HomeKey unit:=wdStory

Selection.Find.ClearFormatting
With Selection.Find
.Text = ChrW(Word1)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
Do While .Execute = True
With Selection
.Range.HighlightColorIndex = wdYellow
.Collapse direction:=wdCollapseEnd
End With
Loop
End With
'次に検索すべき丸数字のユニコード
Word1 = Word1 + 1
Loop


'丸数字の36から50を検索して黄色ハイライト
'最初の丸数字36のユニコード
Word1 = &H32B1&
'50までループ
Do While Word1 < &H32C0&

Selection.HomeKey unit:=wdStory

Selection.Find.ClearFormatting
With Selection.Find
.Text = ChrW(Word1)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
Do While .Execute = True
With Selection
.Range.HighlightColorIndex = wdYellow
.Collapse direction:=wdCollapseEnd
End With
Loop
End With
'次に検索すべき丸数字のユニコード
Word1 = Word1 + 1
Loop

'画面の更新を再開
Application.ScreenUpdating = True

'カーソルをページ先頭に移動
Selection.HomeKey unit:=wdStory

=====ここまでマクロ====
posted by 完治 at 16:35| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年10月24日

Wordで丸数字(1から35まで)を検索してハイライトするマクロ

翻訳でナンバリング原稿を送られ、丸数字でナンバリングして訳すことが多々ある。
で、そのナンバリング(丸数字、@とかAとか)をハイライトするマクロを作った。
ちなみに丸数字は1から35まで。36から50までは下記のPDFでUnicodeを拾って、21から35までと同様の方法でできるはず。ただ、こんな風にループにせずに、@からSまでと同じく範囲を指定して検索できる方法があれば、知りたいもんだ。
http://www.unicode.org/charts/PDF/U3200.pdf

=======ここからマクロ=====
'1〜35までの丸数字をハイライトするマクロ
'
'ユニコードの入れ物の定義
Dim Word1 As Long

'スピードを速くするため画面更新を停止
Application.ScreenUpdating = False

'カーソルをページ先頭に移動
Selection.HomeKey unit:=wdStory

'丸数字(@〜S)を検索して黄色ハイライト
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[@-S]"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchByte = False
.MatchWildcards = True
Do While .Execute = True
With Selection
.Range.HighlightColorIndex = wdYellow
.Collapse direction:=wdCollapseEnd
End With
Loop
End With

'丸数字の21から35を検索して黄色ハイライト

'検索する丸数字の最初のユニコード
Word1 = &H3251&

'ユニコードが一定の値になるまでループ
Do While Word1 < &H3261&

'カーソルをページ先頭に移動
Selection.HomeKey unit:=wdStory

Selection.Find.ClearFormatting
With Selection.Find
.Text = ChrW(Word1)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
Do While .Execute = True
With Selection
.Range.HighlightColorIndex = wdYellow
.Collapse direction:=wdCollapseEnd
End With
Loop
End With

'次の検索すべきユニコードに変える
Word1 = Word1 + 1

Loop

'画面更新を再開
Application.ScreenUpdating = True

'カーソルをページ先頭に移動
Selection.HomeKey unit:=wdStory

=====ここまで====
posted by 完治 at 08:57| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年05月11日

AutoHotKeyの串刺し辞書検索での語尾変化対応

AutoHotKeyで串刺し辞書検索をするスクリプト。

1.文字列が選択されていない場合、ポインター(カーソルではないので注意)が置かれている場所の単語を取得します。
2.単語末が「ied」または「ies」の場合は、「y」に置換。例、「studied」や「studies」は「study」に置換。
3.単語末が「ed」の場合は「ed」を削除。例、「folded」は「fold」に。
4.単語末が「s」の場合は、「s」を削除。例、「approvals」は「approval」に。

Windows key+dを押すと、以上の処置を実施後にLogophileで辞書引きをします。
1単語の辞書引きの場合は、わざわざ単語を選択する必要がなく、ポインターを引きたい単語の上に置き、windows keyとdを押すだけです。

====ここからスクリプト====
;ウインドウズキー+dで以下を実行
#d::

;とりあえずクリップボードに入っているものを避難させる
Backup := ClipboardAll
sleep, 50

;クリップボードを空にする
clipboard =
sleep, 50

;選択範囲をコピー
Send,^c
sleep, 50

;選択されているかどうかの判断。選択されていなかった場合、マウスを左クリック2回で単語選択してコピー

If StrLen(clipboard)=0
{
Mouseclick,Left,,,2
Send,^c
}

;最後の1文字を取得して「半角スペースかどうか判定。
StringRight,spacecheck,clipboard,1

;半角スペースの場合は削除
If spacecheck = %A_SPACE%
{
StringLeft,clipboard1,clipboard,StrLen(clipboard)-1
clipboard := clipboard1
}

;複数形(ies)および過去形(ied)への対応
;最後の3文字を取得(iescheck)
StringRight,iescheck,clipboard,3

;最後の3文字が「ies」か「ied」を判断して、一致する場合は「y」に変更
If iescheck in ies,ied
{
StringLeft,clipboard1,clipboard,StrLen(clipboard)-3
clipboard := clipboard1 "y"
}

;過去形(ed)への対応
;最後の2文字を取得(edcheck)
StringRight,edcheck,clipboard,2

;最後の2文字が「ed」かを判断して、「ed」なら削除
If edcheck = ed
{
StringLeft,clipboard1,clipboard,StrLen(clipboard)-2
clipboard := clipboard1
}

;複数形(s)への対応
;最後の1文字を取得(scheck)
StringRight,scheck,clipboard,1

;最後の1文字が「s」かを判断して、「s」なら削除
If scheck = s
{
StringLeft,clipboard1,clipboard,StrLen(clipboard)-1
clipboard := clipboard1
}

clipwait,0.5,1
;logophileにクリップボードの内容を送る
Run,"C:\Program Files (x86)\Logophile\Logophile.exe" -s"%clipboard%" -g

Send,^v
Send, {enter}

;クリップボードを最初の内容に戻す
Clipboard := Backup

Return

====ここまでスクリプト====
posted by 完治 at 12:05| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2015年04月22日

Kiwi Englishのお勉強




Part 1

Kiaora!
I’m Steven Adams.
I’m a kiwi bloke who has a new bach right here in Oklahoma.
Because I’m a bit of a dag, BankFirst has asked me to spin a yarn with you about what make them so choice.
Tu meke.
So I’d better get my A into G.
It’s all about one word that means the same all over the world, loyal.
You’d have to be two sammies short of a picnic not to bust a gut to do all your banking with BackFirst. Whether you are loaded or on the dole, they treat you like rellies, they never spit the dummy, and they always put in a hard day’s yakka.
So if you are a bright spark, you’ll have a geez at them. And if you do, you deserve a chocolate fish.
And since they are in over fifty communities across Oklahoma, you won’t have to take a tiki tour to find it.
BankFirst, loyal to Oklahoma, loyal to you.
Sweet as.



Part 2

Sup cousie bro, how’s going?
I am proper stoked to be here.
My name is Steven Adams, a pretty lofty kiwi, and I was super chuffed when BankFirst asked me to have a sit down with you about them.
And you are about to find out that every day is a school day.
I am absolutely chockablock with grouse things to say.
BankFirst really is hard out, boy, no dramas, because they know the meaning of solid.
(He is weird)
Solid as, boy.
They’ll give you a fair go whether you’re a wee fella or sprouting some grays, and not just about townies in the big smoke.
They are in over fifty communities out in the wops. No porkie pies.
BankFirst, loyal to Oklahoma, loyal to you.
Bob’s your uncle
(Excuse me sir, you are not from around here, are you?)
Oh, sure, you reckon?

いやぁ、単語を知らないと聞き取りはほんとに難しく、結局ネットを漁って、「あ、そんなこと言ってんだ」と思った箇所も多々あり。

posted by 完治 at 06:55| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2014年11月03日

Trados 2007がクリーンアップ中に落ちる

Trados 2007(Workbench 8.3.0.863 Build 863)がファイルのクリーンアップ中に「動作を停止しました。この問題の解決策を確認しています」というメッセージが出て落ちるようになってしまった。
この間までは問題がなかったので、Multiterm 2009への移行か、Autohotkeyのインストールか、どちらかが原因だろう。Autohotkeyを終了してみる、WorkbenchをTextでエクスポートして新しく作る、SDL Trados 2007をコントロールパネル>プログラムと機能>修復、といろいろやってみたけれど、全く解決せず。
ただ、それ以外の機能は普通に使えているので、とりあえず翻訳し、クリーンアップの段階まで来たらWordのマクロで済ませることにして急場をしのいでいる。
困ったもんだ。
posted by 完治 at 12:06| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2014年11月02日

Autohotkeyでの辞書串刺し検索の改善

先日導入したAutohotkeyでの辞書串刺し検索は、検索したい単語をいちいちマウスで選択しなければならず、面倒くさがりの僕としては、カーソル位置の単語を勝手に取得して検索できるようにしたかった。Wordのマクロではすでにそうしてある。
で、Autohotkeyのコマンド一覧があったので、早速この間のスクリプトに付け足して選択なしでも検索できるようにした。

===ここからスクリプト===
;ウインドウズキー+dで以下を実行
#d::

;とりあえずクリップボードに入っているものを避難させる
Backup := ClipboardAll

;クリップボードを空にする
clipboard =

;選択範囲をコピー
Send,^c

;選択されているかどうかの判断。選択されていなかった場合、マウスを左クリック2回で単語選択してコピー

If StrLen(clipboard)=0

{
Mouseclick,Left,,,2
Send,^c
}

clipwait,0.5,1
;logophileにクリップボードの内容を送る
Run,"C:\Program Files (x86)\Logophile\Logophile.exe" -s"%clipboard%" -g
;クリップボードを最初の内容に戻す
Clipboard := Backup

Return
==ここまでスクリプト===

これで、さらに快適だぁ!
と思ったけれど、選択した場合の挙動がなんか、変だ。
まだまだ、かぁ。
posted by 完治 at 07:59| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

Multiterm 2007からMultiterm 2009への移行

SDLXでの仕事が入ったので初めて使ってみたら、どうやらMultiterm2007では連携していないらしくMultiterm 2009にアップデートする必要が生じた。
で、Multiterm 2007をアンインストールしてMultiterm 2009をインストールしたのだが、Word 2010の起動と終了のたびに「Compile error in hidden module; AutoExec」というメッセージが出る。
おまけにWordのツールのMultitermをクリックするとエラーメッセージの嵐。
WordのStartupフォルダに入っているファイルが原因ということまでは分かったけれど、対応は何をやっても駄目。フォルダに入っていたのはMultiterm7、Multiterm8、Trados8。
あれこれ見ているとProgram Files(x86)のSDL>SDL Multiterm>Multiterm8>Templateには、なぜかMultiterm8が2つ入っている。で、お互いにファイルサイズが微妙に違う。ひょっとしてとこの2つのファイルをWordのStartupフォルダに移してみたら、あらまぁなんと、問題解決!
拡張子を表示させてみたら、1つはMultiterm8.dotmで、もう1つはMultiterm8.dotなのね。
これで、とりあえずmultiterm2007から2009への移行は無事終了。やれやれ。
posted by 完治 at 07:51| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2014年10月29日

Autohotkeyでの辞書串刺し検索とGoogle検索

AutohotkeyでLogophileを使った辞書串刺し検索とGoogle検索を導入。
いつものごとくよく分からないまま取り入れ、訳も分からないままネットで拾ったものを真似して入れたら、当然の如く動かない、走らない、表示されない、の連続。
それでもどうにか思ったような動作ができるようになったので、ここにメモ。
Logophileでの辞書串刺し検索。
Widowsキーとdを押すと検索。
#d::
Backup := ClipboardAll
clipboard =
Send,^c
ClipWait,1,1
Run,"C:\Program Files (x86)\Logophile\Logophile.exe" -s"%clipboard%" -g
Clipboard := Backup
Return

Firefox+Googleで二重引用符付きの検索
windowキーとgを押すと検索。
#g::
Backup := ClipboardAll
clipboard =
Send,^c
ClipWait,1,1
Run,https://www.google.co.jp/search?as_epq=%Clipboard%
Clipboard := Backup
Return

ネットで見つけたものは、最後の部分が「search?q="""%Clipboard%"""」となっていた。Chromeならこれでもいいのだけれど、Firefoxでやるとどうしてもうまくいかない。
この部分を「search?as_epq=%Clipboard%」とすることで、どちらでもオーケーとなった。
やれやれ。
posted by 完治 at 18:03| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2013年11月12日

Windows 7(64bit) + Office 2010(32bit) + Trados 2007+Multierm 2007(7.5.0.444)

先日、ノートブックのOfficeを2007から2010に切り替えた。時間ができたので、デスクトップのOfficeも2010に乗り換え。ただ、ノートブックと違ってデスクトップはWindows 7が64bitなので、また変な問題が出た(というか、Trados 2007がこれらに対応していないのだから、仕方がないと言えば仕方がないのだけれど)。
後々のためにメモ。
1. Office 2010をインストール。
2. Trados 2007をインストール。
3. Multiterm 2007をインストール(ここに従って、tempフォルダのファイルをクリック)
4. WorkbenchのOptions>Multiterm VersionでMultiterm 7を選択しようとするものの、エラー。ああ、そうですか、でもこれも想定内よ、それなら前回と同じく、C:\Program\SDL International\T2007_FL\TT\SelfRegister.batを管理者として実行し、その後、 C:\Program \SDL International\MultiTerm 2007\#_SelfRegister_Desktop.batをやはり管理者として実行すればいいのね、と実行するも駄目。orz
5. いろいろ探してみたら、 Microsfot.Net frameとJavaを削除し、レジストリで
HKEY_CURRENT_USER\Software\Trados\MultiTerm
HKEY_CURRENT_USER\Software\Trados\MultiTerm Administrator
HKEY_LOCAL_MACHINE\Software\Trados\MultiTerm
を削除せい、ということなので、とりあえず削除(ただし、レジストリの項目は1個しか見つからなかった)。
6. その上でもう一度、Multiterm 2007をインストール。
7. じゃじゃーん。これでばっちりWorkbenchでMultiterm 7が選択可能に。んが、実際に文章をWorkbenchで開いてみると、用語と連携されておらず、赤線もつかなきゃ、表示もされない。
8. さっきの5.の指示に従ってMicrosoft.Netframe3を入れたんだけれど、それがどうやら入っていなかったらしい(コントロールパネルのプログラムで表示されず)。それで、改めてMicrosoft. Netframe 4.0をダウンロードしてインスト。
9. お、今度はうまく行った。やれやれ。と思ったのもつかの間、別の用語集を選択したら、やはり表示されない。とりあえず、おまじないの如く、MultitermのReorganize termbaseを実行したら、今度はばっちり。
10. Multitermに新用語を追加できない、という問題はいつも通り、コントロールパネルのJavaの詳細でJava plgu-in>次世代のJava Plug-inを有効にする、のチェックを外して解決。

これで、Windows 7 (64bit)+ Office 2010 (32bit)+Trados 2007+Multiterm 2007(7.5.0.444)で翻訳をおこなう作業環境が確保された。
次の課題は、Windows 8.1 (64 bit)+ Office 2013 (32 bit)+Trados 2007+Multiterm 2007でうまくいくかどうかだな。
posted by 完治 at 08:32| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする