Wordのマクロをがしがし書く
genre:windows,hack,programing
Wordで文書を作成しなきゃならないんだけど、Emacs使い的にはWordで長文作成なんてやってられないのでエディタで書いた後にWordにコピーして整形、という形で作成。
この場合、画像を入れたいときに手作業でわざわざファイルを指定して挿入、という作業を繰り返さなければいけないのが面倒なのでマクロで自動化を試みる。
挿入する画像には[0-9]{1,5}.*というファイル名をつけておいて、エディタでの編集時には挿入したい画像のgファイル名を^[0-9]{1,5}という形で埋め込んでおき、マクロを実行すると対応する画像が自動的に挿入される。
ということで書いたVBAが以下。Wordの正規表現が独特で融通が利かなかったり、VBAの文法自体がワケ分からなかったりと激しくハマリまくりましたが・・・。せめてJavaScriptでマクロが書けるようになると便利なのに。。。
Dim TextRange As Range Dim FileName As String Dim FolderName As String Dim FoundFile As String Set TextRange = ActiveDocument.Content Set fs = Application.FileSearch With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then GoTo Label_end End If FolderName = .SelectedItems(1) End With Do While TextRange.Find.Execute(“^13[0-9]{1,5}”, , , True) FileName = TextRange.Text FileName = Mid(FileName, 2) Selection.SetRange Start:=TextRange.End, End:=TextRange.End With fs .NewSearch .LookIn = FolderName .SearchSubFolders = False .FileName = FileName & “.*” If .Execute() > 0 Then For I = 1 To .FoundFiles.Count FoundFile = .FoundFiles(I) Selection.InlineShapes.AddPicture _ FileName := FoundFile, _ LinkToFile := False, _ SaveWithDocument := True Next I End If End With Loop ‘終了 Label_end: End SubSub InsertImage()