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

2007年12月13日 21:33

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