Excel MVPの伊藤さんがブログで、WordのPageオブジェクトを扱うマクロを紹介されています。
あまり扱われることがありませんが、このPageオブジェクトにはページ内容を画像形式で取得できるEnhMetaFileBitsプロパティがあります。
名前の通り、このプロパティからはEMF形式のバイト配列が返ってくるので、これを使うと各ページを画像として取得することができます。
Option Explicit
Public Sub Sample()
DocumentToEMF "C:\Test\EMF"
End Sub
Public Sub DocumentToEMF(ByVal SaveFolderPath As String)
Dim tmp As Word.WdViewType
Dim p As Word.Page
Dim i As Long
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
i = 1 '初期化
SaveFolderPath = AddPathSeparator(SaveFolderPath)
tmp = ActiveWindow.View.Type
ActiveWindow.View.Type = wdPrintPreview
With CreateObject("ADODB.Stream")
.Type = adTypeBinary
For Each p In ActiveWindow.ActivePane.Pages
.Open
.Position = 0
.Write p.EnhMetaFileBits
.SaveToFile SaveFolderPath & "Page" & i & ".emf", adSaveCreateOverWrite
.Close
i = i + 1
Next
End With
ActiveWindow.View.Type = tmp
End Sub
Private Function AddPathSeparator(ByVal str As String) As String
'パスの区切り文字追加
If Right(str, 1) <> ChrW(92) Then str = str & ChrW(92)
AddPathSeparator = str
End Function
EnhMetaFileBitsプロパティはPageオブジェクト以外にも、SelectionオブジェクトやRangeオブジェクトにもあるので、特定の範囲のみを画像化したい場合は、そちらを使うと良いでしょう。

















この記事へのコメントはありません。