Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » Word VBAで表内に画像を挿入する

Word VBAで表内に画像を挿入する

動作検証バージョン:64bit Windows 10 Pro + 32bit Word(バージョン2206 ビルド15330.20246 Microsoft Store)

「wordマクロ 表に画像を挿入」
といった検索キーワードでアクセスがあることに気がつきました。

Word VBAを使って、表の中に画像を挿入するにはどのようなコードを書けばいいのかを調べていらしたのでしょう。

「Word VBA 表内 画像」
といった検索も、同様のコードを探していたのかもしれません。

表内に画像を挿入するサンプルマクロ

Cドライブのtempフォルダーに挿入したい画像sample.jpgを置き、表が存在するWord文書がアクティブな状態で、以下のWordマクロを実行してください。

Sub 表内に画像を挿入する()
 Dim cel As Cell
 Set cel = ActiveDocument.Tables(1).Cell(1, 1)

 ActiveDocument.InlineShapes.AddPicture _
   FileName:="C:\temp\sample.jpg", _
   Range:=cel.Range
End Sub

アクティブ文書の1つ目の表の、1行1列目のセルに、画像「C:\temp\sample.jpg」が挿入されます。

サンプルマクロで行っている処理

画像をShapeオブジェクトにするかInlineShapeにするかですが、わざわざ表内に挿入したいということですから、InlineShapeとして挿入する仕様にしました。
Shapeオブジェクトにした場合は、文字列の折り返し設定によっては、アンカーが表内に存在するにも関わらず表とは無関係の位置に画像表示される可能性もあるためです。

上記のWordマクロで行っている処理は以下のとおりです。

まず、拙著『Excel VBAユーザーのためのWord VBA入門(2):Tableの基本編』の、「10-1. Table.CellメソッドでCellを取得する」でも解説している、TableオブジェクトのCellメソッドを使って、

画像を挿入する先のセルを取得し、Cell型のオブジェクト変数celに代入しておきます。

Dim cel As Cell
Set cel = ActiveDocument.Tables(1).Cell(1, 1)

つづいて、InlineShapesコレクションに用意されているAddPictureメソッドを使って、

画像を挿入しています。

ActiveDocument.InlineShapes.AddPicture _
  FileName:="C:\temp\sample.jpg", _
  Range:=cel.Range

InlineShapes.AddPictureメソッドの引数RangeにはRangeオブジェクトを指定する必要があるため、Cellオブジェクトに用意されているRangeプロパティを使っています。

ActiveDocument.InlineShapes.AddPicture _
  FileName:="C:\temp\sample.jpg", _
  Range:=cel.Range

Range.InlineShapes.AddPictureでも書けるけれど

なお、InlineShapes.AddPictureメソッドを使った部分は、

cel.Range.InlineShapes.AddPicture _
  FileName:="C:\temp\sample.jpg"

と書いても同じ結果になるのですが、画像を挿入する先であるセルを、InlineShapes.AddPictureメソッドの引数Rangeで指定するほうが、応用しやすいように思えるので、

ActiveDocument.InlineShapes.AddPicture _
  FileName:="C:\temp\sample.jpg", _
  Range:=cel.Range

をおすすめしておきます。

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » Word VBAで表内に画像を挿入する

「表・テーブル」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.
.