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関連

    文字列を横方向に移動するWordマクロ(WordBasic編)

    いつもお世話になっているWord MVPの新田さんが、まるでカニの動き…

  2. Office関連

    図形の結合を行うPowerPoint マクロ(ExecuteMsoメソッド編)

    Excel MVPの伊藤さんのブログで、PowerPointの「図形の…

  3. アイコン一覧

    Office 365アイコン(imageMso)一覧(M)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  4. Office関連

    [Word VBA]引数の型がVariantになっているのはなぜ?

    インストラクターのネタ帳でお馴染みの伊藤さんが先日下記の記事をアップさ…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP