2024年07月30日

日本医薬品一般的名称(JAN)データベースとKEGG MEDICUSを検索するHotKeyのプロンプト

日本医薬品一般的名称(JAN)データベースを検索するHotkeyのプロンプト

;ウインドウズキー+Jで以下を実行
;日本医薬品一般名称データベース及びKEGG MEDICUSで検索

#J::

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

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

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

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

If StrLen(clipboard)<=1
{
Mouseclick,Left,,,2
Send,^c
}
sleep, 50

clipwait,0.5,1
;日本医薬品一般名称(JAN)データベース及びKEGG MEDICUSにクリップボードの内容を送る
;その前に、日本医薬品一般名称(JAN)データベースのURLに日本語が入るので、それをなんとか押し込むために文字列をstrに入れる


; clipboardに入っている文字列の最後がスペースかどうか判定する
If (SubStr(clipboard, StrLen(clipboard)) = " " or SubStr(clipboard, StrLen(clipboard)) = " ")

; 最後の文字が半角スペースまたは全角スペースならば、空文字列に置換する

{
clipboard := RegExReplace(clipboard, "\s$", "")
}

;変数strを初期化
str := ""

;clipboardの中身に日本語が含まれているかどうかの判断
if RegExMatch(clipboard, "^[a-zA-Z0-9]+$")

;英数字のみの場合
{
str := "医薬品一般的名称(英名)検索"
}

;英数字以外がある場合
else {
str := "医薬品一般的名称(日本名)検索"
}



Run,https://jpdb.nihs.go.jp/jan/DetailList_ja?keyword=%clipboard%&submit=%str%

Run,https://www.kegg.jp/medicus-bin/search_drug?search_keyword=%clipboard%

Return

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

2022年12月20日

リストにある複数の単語をWordで検索し、出現回数を表示するマクロ

「ヵ月」や「か月」など、使わないでねと指示されている表記をついつい忘れて使ってしまう、しょうもない翻訳者の私。
そこから脱出するために、使ってはいけない表記をリストから一網打尽で検索するマクロを作ってみた。

Wordの文書内でリストにある単語を検索し、ヒットした単語を黄色でハイライトするとともに、それぞれの単語が何回出現したかを表示するマクロ。

検索したい単語のリストをエクセルで作成し、CSV形式で保存する(ちなみに、このファイルをエクセルで開くと文字化けする。内容を変更したい場合は、ファイルを右クリックして「プログラムから開く」で、ノートパッドや秀丸などのテキストエディタを選択する)。
できたCSVファイルを右クリックし「パスのコピー」をクリックする。
以下のマクロの「ここにCSVファイルのパスを代入」の部分に、このパスを入れる。

参考にしたウェブサイト:
【Word VBA】Findで複数文字の検索を繰り返す方法!蛍光ペンで着色も!http://extan.jp/?p=5569


====ここから====
Dim csvFilePass
Dim strBuf As String
Dim tmp As Variant
Dim changeNumber As Integer
Dim myRange As Range
Dim msg As String

'置換リストファイルを指定
csvFilePass = "ここにCSVファイルのパスを代入"

Open csvFilePass For Input As #1

'CSV内の行数分置換処理を繰り返す

Do Until EOF(1)

'1行分のデータを読み込む
Line Input #1, strBuf

'文字列を","で分割
tmp = Split(strBuf, ",")


'検索範囲を設定
Set myRange = ActiveDocument.Range(0, 0)

'単語の出現回数のカウントを0にする
changeNumber = 0

'検索・置換の設定
With myRange.Find
.Text = tmp(0) '検索ワードを代入

'検索がヒットしている間は繰り返す
Do While .Execute = True

myRange.HighlightColorIndex = wdYellow
myRange.Collapse wdCollapseEnd

'出現回数をカウントする
changeNumber = changeNumber + 1

Loop
End With

'実行
Selection.Find.Execute Replace:=wdReplaceAll

'出現回数が0以外の場合は、出現単語と出現回数を記録する。0の場合は記録しない。
If changeNumber > 0 Then
msg = msg & vbCrLf & "「" & tmp(0) & "」の出現回数:" & changeNumber & "回"

End If

Loop
Close #1

'結果をクリップボードにコピー
With CreateObject("Forms.TextBox.1")
.MultiLine = True '複数行入力可
.Text = msg
.selstart = 0
.sellength = .textlength
.Copy
End With

'該当箇所がない場合のメッセージ
If Len(msg) = 0 Then
msg = "該当箇所はありませんでした。"

'該当箇所がある場合のメッセージ(該当単語と出現回数)
Else
msg = msg & vbCrLf & vbCrLf & "この結果はクリップボードに入っていますので、CTRL+Vでペーストできます。"

End If


MsgBox msg

===ここまで===

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

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) | 日記 | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。