Office関連

各ページを画像に変換するWordマクロ

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

2015年12月の人気記事前のページ

オトカドール 3rdドリームをプレイしてきたよ(3)次のページ

関連記事

  1. Office関連

    Office製品のフィードバックって本当に反映されるの?

    今年の1月に、WordやExcel等のOffice製品で、UI上の不具…

  2. Office関連

    組み込み定数を列挙するVBAマクロ

    定数の名前や値を調べたい、そんなときはTypeLib Informat…

  3. Excel

    指定したフォルダ内にあるExcelファイルを一つにまとめるVBAマクロ

    複数あるファイルを一つにまとめるにはどうすれば良いか?という質問をいた…

  4. Office関連

    住所から郵便番号を取得するVBAマクロ

    「住所から郵便番号 VBA」といったキーワード検索でのアクセスがあった…

  5. Office関連

    ルビ(ふりがな)を一括設定するWordマクロ

    2016/10/28 追記:改良版のマクロを書きました。…

コメント

  • コメント (0)

  • トラックバックは利用できません。

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP