« ワードから秀丸を動かす1 | Main | 正規表現を使った翻訳のマクロ »

2014.04.04

ワードから秀丸を動かす2

ワード上でテキストをメモリーに記憶させてから秀丸に移り、続けて秀丸でその記憶されたテキストを処理させるにはどうしたら良いか。

前回示したようにワードから秀丸を起動するには次のようにワードで指定する。

Sub 秀丸起動()
Dim obj As Object
Set obj = CreateObject("WScript.shell")
obj.Exec "c:\Program Files\Hidemaru\Hidemaru.exe"
End Sub

しかしワードから個別の秀丸ファイルや秀丸マクロを動かすにはどうするか。もう一工夫が必要になる。

そこで秀丸にある「秀丸を起動すると同時に秀丸マクロを動かす」という機能を使うのである。秀丸には秀丸エディタ起動時のオプションとして/xというコマンドがある。/xの後ろにマクロファイル名を指定すると、秀丸が起動したあとその秀丸マクロが動くようになっている。

ワードのコマンドは次のようになる。
Sub 貼込み秀丸へ()
 Dim obj As Object
Set obj = CreateObject("WScript.shell")
Selection.Copy
obj.Exec """c:\Program Files\Hidemaru\Hidemaru.exe"" /x ""C:\Users\...\abc.MAC"""
End Sub

このうち/x ""C:\Users\...\abc.MAC""の部分が動かそうとする秀丸マクロである。パスに空白を含むときは「"」で括る必要があり、さらにワードマクロのコマンドに取り込むときには「""」と書かねばならない。さらにobj.Exec "..."の中にこれを取り込むと「"""」となることがある。少し見難いが仕方ない。

また、Selection.Copyを入れているのは、ワードの選択部分をメモリーに取り込むためである。

メモリーに蓄えたテキストとそれを処理するマクロは用意できた。ではそれを書き込む作業用ファイルはどうするのか。そのファイルはワードマクロでは指定せず、秀丸マクロに書き込んでおく。それにより、秀丸マクロを動かしたときに書き込むファイルが開かれるのである。

そこで今度は秀丸マクロの中の書き方となる。
setcompatiblemode 0x0F;
//作業用秀丸ファイルをアクティブに
 #org= hidemaruhandle(0);
 openfile "/m3 C:\\Users\...\\abc.txt" ;
 closehidemaru #org;
 selectall;
 delete;
 paste;
//構造解析
 execmacro "構造解析英文.mac";
endmacro;

作業用ファイルは openfile "/m3 C:\\Users\\...\\abc.txt"; で指定している。その中の/m3は、同じファイルを2つ開くことを禁止し、既に開いているファイルにジャンプするという指定である。秀丸のコマンドの書き方では\が\\と表記されることに注意する。

そのコマンドを挟む次の2行は、作業ファイルを呼び出したときに余分な(無題)の秀丸が出てくるで、それを閉じるためである。
 #org= hidemaruhandle(0);
 closehidemaru #org;

また selectall; と delete; を入れてあるのは、呼び出した作業ファイルを一度白紙にするため。その後の paste; でメモリーに記憶させていたワードのテキストを貼り付けている。これで実現したい作業の準備が出来た。

その作業としては、ここに示したものでは構造解析という処理をさせている。これは別に専用のマクロを作っているので、それを呼び出したのである。貼り付けられたテキストは、構造解析専用マクロで処理され、その結果が作業ファイルに書き込まれる。

以上をまとめると、ワード文書にあるテキストを範囲指定しておいて、ショートカットキーを押すだけで、ワードと秀丸のマクロにより次のことが一瞬で出来る。

指定範囲をメモリー(クリップボード)に保存
アクティブウィンドウを秀丸に切り替え
秀丸マクロを起動
秀丸作業ファイルを開く
作業ファイルの内容をすべてクリア
メモリー内のテキストを貼り付ける
テキストの構造解析をする

このマクロを作るのには、秀丸の作者である斉藤秀夫さんの「秀丸エディタ&関連ソフトサポート会議室」で色々お教えいただいた。常にそうであるが、打てば響くような対応は実に有難く、特に記して御礼を申し上げたい。

|

« ワードから秀丸を動かす1 | Main | 正規表現を使った翻訳のマクロ »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/20048/59409522

Listed below are links to weblogs that reference ワードから秀丸を動かす2:

« ワードから秀丸を動かす1 | Main | 正規表現を使った翻訳のマクロ »