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オブジェクトにもあるので、特定の範囲のみを画像化したい場合は、そちらを使うと良いでしょう。

  















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