ファビコン。井の家紋。画像ファイルをWordファイルに取り込むWordマクロ | エクセルマクロ(VBA)実践蔵(じっせんぐら)

前の項目 - テキストファイルをエクセルに取り込むツール

画像ファイルをWordファイルに取り込むWordマクロ最終更新日:2025-02-25

【Wordマクロ】画像をWordファイル内に貼り付けるマクロ

スキャンした画像をWordファイルに並べるのが意外と手間だったので、マクロにしました。今回は、Excelではなく、Wordマクロになるため、ご注意ください。

Wordファイルと同一フォルダ内に格納されている画像(JPGファイルやPNGファイル)をファイル名順に取り込んでいきます。その際、1ページに1画像を配置して、レイアウト設定は、「前面」としています。他のレイアウト設定に変更したい場合の変更方法については、後述のマクロの解説に記述しています。

Wordマクロを記述する準備

リボンに開発タブが無い場合は、追加してください。

Wordリボンの開発

Wordのリボンに開発タブがない場合、[ファイル]->[その他]->[オプション]を開き、[リボンのユーザ設定]にて、メインタブの開発にチェックを入れてください。

Wordマクロ開発タブの出し方

以降は、白紙から作成する場合の手順について記述していきます。

このページの末尾からWordマクロ有効ブックをダウンロードする場合は不要な手順になります。

Excel同様、通常のファイルとマクロ有効ファイルで拡張子が異なります。いつも通りWordファイルを立ち上げたら、[ファイル]->[名前を付けて保存]を選択し、左側にある「このPC」をダブルクリックします。

Wordマクロ有効ブックの作り方

ファイルの種類をクリックして、[Wordマクロ有効文書(*.docm)]を選択し、ファイル名をつけて、保存してください。

開発タブからVisual Basicを開くと、下記の画面になります。

Wordマクロのマクロ記述画面

コード(マクロ)を書く場所は、標準モジュールになります。Project(〇○○)の、〇○○がWordのファイル名であり、Project1つがWordファイル1つに相当します。標準モジュールが無い場合は、Projectを右クリックして、[挿入]->[標準モジュール]を選択してください。手動で追加するとデフォルトでは、「Module1」になります。マクロの記録を使った場合、デフォルトで「NewMacros」となります。これらがマクロを書く場所になりますが、標準モジュール配下にあれば、名前はなんでも問題ありません。

Wordマクロの記述

下記のコードを書きます。

 
Sub 同フォルダ画像の取り込み()

Dim GetFileName As String, 拡張子 As String
Dim GetJPGPath As String
Dim docObj As Document
Dim FSO As Object
Dim InputRange As Range
Dim AddShape As InlineShape

Set docObj = ActiveDocument
Set FSO = CreateObject("Scripting.FileSystemObject")

'同一フォルダ内の画像を探す
'ファイル名を取得
GetFileName = Dir(docObj.Path & "\", vbNormal)
Do While GetFileName <> "" 'ファイルが存在する場合
拡張子 = LCase(FSO.GetExtensionName(GetFileName))

If 拡張子 = "jpg" Or 拡張子 = "png" Then
'対象にする拡張子

GetJPGPath = docObj.Path & "\" & GetFileName
'ファイル末尾情報の取得
Set InputRange = docObj.Bookmarks("\EndOfDoc").Range
'ファイル末尾に画像を追加
Set AddShape = InputRange.InlineShapes.AddPicture(FileName:=GetJPGPath)
If Not InputRange.IsEqual(docObj.Bookmarks("\StartOfDoc").Range) Then
'ファイル先頭以外なら、画像前で改行と改ページをする
Call InputRange.InsertAfter(vbCr)
Call InputRange.InsertBreak(wdPageBreak)
End If
'画像のレイアウトを前面に設定する
AddShape.ConvertToShape.WrapFormat.Type = wdWrapFront

End If
GetFileName = Dir()
Loop
Set FSO = Nothing
Set AddShape = Nothing
Set InputRange = Nothing
Set docObj = Nothing

End Sub

マクロの解説

Wordファイルが格納されているフォルダにある画像ファイル(JPG、PNG)を対象に、画像ファイル名順にWordファイルへ取り込みます。既にデータが格納されているWordファイルであれば、末尾への追加書き込みになります。末尾を指定しているのは、コードの「Bookmarks("\EndOfDoc")」の部分になります。画像挿入の際に、改行と改ページを挿入して、最後のページに画像が張り付きます。コードの「InsertAfter(vbCr)」が改行の挿入であり、「InsertBreak(wdPageBreak)」の部分が、改ページになります。ファイル内にデータがない(空ファイル)の場合は、1画像目の前に改行と改ページは入りません。

そして、画像のレイアウト設定は、「前面」としています。「WrapFormat.Type」の右側、「wdWrapFront」で前面の指定になります。他のレイアウトを指定したい場合は、こちらから選択してください。

Wordマクロの実行方法

開発タブの「マクロ」から呼び出して実行します。

Wordマクロの呼び出し方

Wordマクロの実行

マクロ名は、コードのSub ○○と記述した○○の部分が表示されます。

Wordファイルに同フォルダの画像をまとめて取り込むマクロ(ツール)のダウンロード

起動前にダウンロードファイルを右クリックして、末尾にあるセキュリティを許可してください。こちらは、Excelのものですが、参考までに

Windows PCにインストールされているWordで起動してください。

下記からダウンロードしたWordファイルを起動後、コンテンツの有効化を行うこと。

画像を取り込むマクロのワードマクロ有効ブック(docm)のダウンロード

前の項目 - テキストファイルをエクセルに取り込むツール