hylomの日記: Wordのマクロをがしがし書く 2
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
そういうときは (スコア:1)
Re:そういうときは (スコア:1)
入れなきゃいけないのが面倒なのです・・・。