このVBAマクロは、ユーザーが選択した画像をMicrosoft Wordの指定ページに一括挿入するためのものです。特に、文書の2ページ目に画像を挿入する際に役立つように設計されていますが、コードを少し変更すれば、任意のページに画像を挿入することも可能です。
コードの詳細解説
1. ファイルダイアログの設定と表示
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Title = "Select Images"
.Filters.Add "Images", "*.gif; *.jpg; *.jpeg; *.bmp; *.png", 1
.AllowMultiSelect = True
.InitialFileName = ""
fileChosen = .Show
End With
FileDialog
オブジェクトを使用して、画像ファイルを選択するダイアログを表示します。msoFileDialogFilePicker
は、ユーザーがファイルを選択するためのダイアログボックスを表示するオプションです。AllowMultiSelect = True
に設定することで、複数のファイルを選択可能にしています。fileChosen
は、ユーザーがファイルを選択したかどうかを確認するための変数です。
2. ファイルが選択されていない場合の処理
If fileChosen <> -1 Then
Exit Sub
End If
fileChosen
が-1
でない場合、ユーザーがファイル選択をキャンセルしたとみなし、マクロを終了します。
3. 2ページ目の位置を特定
If ActiveDocument.ComputeStatistics(wdStatisticPages) < 2 Then
ActiveDocument.Content.InsertAfter vbCr & vbCr
End If
Set rng = ActiveDocument.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=2)
rng.Collapse Direction:=wdCollapseStart
ComputeStatistics(wdStatisticPages)
を使用して、文書のページ数を取得します。- 文書が1ページしかない場合、改行を挿入して2ページ目を作成します。
GoTo
メソッドを使用して、2ページ目の開始位置にカーソルを移動させます。
4. 画像を挿入
For i = 1 To fd.SelectedItems.Count
Set img = ActiveDocument.InlineShapes.AddPicture(FileName:=fd.SelectedItems(i), LinkToFile:=False, SaveWithDocument:=True, Range:=rng)
img.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
rng.Collapse Direction:=wdCollapseEnd
Next i
For
ループを使用して、選択されたすべての画像を2ページ目に挿入します。AddPicture
メソッドで、画像を指定した範囲 (rng
) に挿入します。- 画像は中央揃え (
wdAlignParagraphCenter
) に設定されます。 - 画像を挿入した後、カーソルを次の位置に移動 (
Collapse Direction:=wdCollapseEnd
) させて、次の画像がその後に続けて挿入されるようにします。
カスタマイズの提案
このマクロをカスタマイズすることで、さらに多様なニーズに対応できます。
- 任意のページに画像を挿入:
Count:=2
の部分をユーザー入力 (InputBox
) に変更して、任意のページに画像を挿入できるようにする。
- 画像のサイズ調整:
- 画像の挿入後に
img.Width
やimg.Height
を調整して、特定のサイズにリサイズする。
- 画像の順序変更:
- 画像を逆順で挿入するには、
For
ループをFor i = fd.SelectedItems.Count To 1 Step -1
のように変更します。
まとめ
このVBAマクロは、ユーザーが選択した複数の画像をWord文書の指定ページに効率的に挿入するために非常に便利です。特にレポートやプレゼンテーション用の文書で、複数の画像を一括で管理したい場合に役立ちます。少しのカスタマイズで、さらに柔軟な操作が可能になりますので、ぜひご自身のプロジェクトで活用してみてください。
Wordで使うことは少ないけどできるの覚えとくと意外と使えるかも
ではまたー
コメント