記事一覧:2007年12月13日

Wordのマクロをがしがし書く

genre:windows,hack,programing


Wordで文書を作成しなきゃならないんだけど、Emacs使い的にはWordで長文作成なんてやってられないのでエディタで書いた後にWordにコピーして整形、という形で作成。



この場合、画像を入れたいときに手作業でわざわざファイルを指定して挿入、という作業を繰り返さなければいけないのが面倒なのでマクロで自動化を試みる。



挿入する画像には[0-9]{1,5}.*というファイル名をつけておいて、エディタでの編集時には挿入したい画像のgファイル名を^[0-9]{1,5}という形で埋め込んでおき、マクロを実行すると対応する画像が自動的に挿入される。



ということで書いたVBAが以下。Wordの正規表現が独特で融通が利かなかったり、VBAの文法自体がワケ分からなかったりと激しくハマリまくりましたが・・・。せめてJavaScriptでマクロが書けるようになると便利なのに。。。

Sub InsertImage()

 
  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 Sub