概要
autohotkeyというソフトを使ってwordでギリシャ文字を素早く入力するマクロを紹介します。前回の記事とほとんど同じやり方を使っています。具体的な仕様は以下のようになっています。
- ;u と入力 ⇒ "μ"が入力される
- ;ohm と入力 ⇒ "Ω"が入力される
参考
autohotkeyを使ったことが無い方はこのリンクを参考にしてみてください。
https://ch.nicovideo.jp/Jinsichi/blomaga/ar455334
http://wg16.hatenablog.jp/entry/autohotkey_001
https://qiita.com/chr/items/47f50e36703d3bb20371
コード
#Hotstring C * ;*はお好み(無くすとspaceとかで変換)、Cで大文字小文字区別
#Hotstring ? ;文章途中からの入力も対象
#IfWinActive ahk_class OpusApp ;wordを開いている時だけ実行
::;u::
oWord := ComObjActive("Word.Application")
oWord.Selection.InsertSymbol(CharacterNumber:=109, Font:="Symbol", Unicode:=False)
return
::;ohm::
sleep, 50
oWord := ComObjActive("Word.Application")
oWord.Selection.InsertSymbol(CharacterNumber:=87, Font:="Symbol", Unicode:=False)
return
#If ;ワードのみここまで
もちろん使う人によって頻繁に使う文字は異なってくると思いますので、是非これを参考に書き換えて使っていただけたらと思います。以下で詳しく説明します。
#Hotstring C * ;*はお好み(無くすとspaceとかで変換)、Cで大文字小文字区別
#Hotstring ? ;文章途中からの入力も対象
ここでCを書かなかった場合、ohm以外にもOHMやohMなどと入力しても"Ω"に変換されてしまいます。*を書かない場合、ohmの後にspaceやenterなどの区切るキーを押して初めて変換されます。これは好みの問題だと思います。?を書かないとk;ohmやM;ohmと入力しても"Ω"に変換されません。
二行に分けて書いたのは特に意味はありません。一行にしても大丈夫です。
#IfWinActive ahk_class OpusApp ;wordを開いている時だけ実行
この文はword以外(例えばChromeなど)で;uと入力した時にエラーが起きるのを防いでいます。
::;u::
これはホットストリングと言って2つのコロンで囲ったフレーズをタイプすると発動します。この場合 ";u" です。
oWord := ComObjActive("Word.Application")
この文はスクリプトが長くなるのを防ぐために代入しているだけです。
oWord.Selection.InsertSymbol(CharacterNumber:=109, Font:="Symbol", Unicode:=False)
ここでwordのvbaのInsertSymbolを動かします。もし自分用に書き換える場合、CharacterNumberを調べる必要があります。調べ方は以下のようにします。
ただここで注意したいのが、文字コードの右側にコード体系というのがあるのですが、これを「10進」にしておく必要があります。他のものが選択されていると文字コードが変化します。
ちなみにこのサンプルコードでは入力する文字を文字コードから直接指定しているため、基本的には全角、半角の区別関係なく同じものが出てきます。
sleep, 50
ohmの時だけこのコマンドが入っている理由は、入力する文字が3文字以上だと文字の削除が間に合わないためです。かなり長い文字を入力する場合はsleep時間をもっと増やすと安定するかもしれないです。
まとめ
前回の記事に上げたコードが結構複雑だったので、今回は出来るだけ説明を詳しくすることを心がけました。是非参考にしてもらえると嬉しいです。
もしよければこちらの記事もどうぞ。↓
通常マウスでコピー,ペースト,戻るなどができるようにするマクロ
wordで指数を自動で上付き文字に変換させる