この記事では、Excel VBAを使用してWord文書内の画像のサイズを一括で変更する方法を詳しく説明します。具体的なコードとその解説、さらに実践的な応用例を3つ紹介しています。
Excel VBAの基本
Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。
そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。
Excel VBAを用いたWord文書内の画像のサイズ変更
Word文書内の画像サイズを一括で変更するためには、Excel VBAを使用してWordのオブジェクトを操作します。以下がその基本的なコードです。
Sub ResizeImagesInWord()
Dim WordApp As Object
Dim WordDoc As Object
Dim Picture As Object
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Open("C:\path\to\your\document.docx") 'ファイルパスを指定
WordApp.Visible = True
For Each Picture In WordDoc.InlineShapes
Picture.Width = 200 '幅を200ポイントに変更
Picture.Height = 300 '高さを300ポイントに変更
Next Picture
WordDoc.Close SaveChanges:=True
WordApp.Quit
Set WordDoc = Nothing
Set WordApp = Nothing
End Sub
このコードは、指定したWord文書を開き、文書内のすべての画像を一括で指定したサイズに変更します。
コードの詳細解説
1. 最初にWordアプリケーションとWord文書のオブジェクトを定義します。
2. `CreateObject(“Word.Application”)`を使用して、Wordアプリケーションを開きます。
3. `WordApp.Documents.Open`で特定のWord文書を開きます。
4. For Eachループを使用して、Word文書内のすべてのインライン画像を処理します。
5. 画像の幅と高さを指定します。この例では、幅を200ポイント、高さを300ポイントに設定していますが、必要に応じて変更できます。
6. 最後にWord文書を保存し、アプリケーションを終了します。
応用例
1. 特定のサイズ以下の画像のみを変更する
Sub ResizeSmallImagesInWord()
'...
For Each Picture In WordDoc.InlineShapes
If Picture.Width < 150 And Picture.Height < 150 Then
Picture.Width = 200
Picture.Height = 300
End If
Next Picture
'...
End Sub
この応用例では、幅と高さが150ポイント未満の画像のみを対象としてサイズ変更します。
2. 画像のアスペクト比を保持したままサイズを変更する
Sub ResizeWithAspectRatio()
Dim AspectRatio As Double
'...
For Each Picture In WordDoc.InlineShapes
AspectRatio = Picture.Width / Picture.Height
Picture.Width = 200
Picture.Height = 200 / AspectRatio
Next Picture
'...
End Sub
この例では、画像のアスペクト比を維持してサイズを変更します。
3. 画像に代替テキストが設定されているもののみサイズを変更する
Sub ResizeWithAltText()
'...
For Each Picture In WordDoc.InlineShapes
If Picture.AlternativeText <> "" Then
Picture.Width = 200
Picture.Height = 300
End If
Next Picture
'...
End Sub
代替テキストが設定されている画像のみを対象としたサイズ変更ができます。
まとめ
Excel VBAを利用して、Word文書内の画像のサイズを効率よく変更することができます。上記の基本的なコードや応用例を活用して、独自のニーズに合わせてカスタマイズしてください。
VBAも良いけどパワークエリも良い
VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。
クリックするとパワークエリの全11講座が表示されます。
-
【初心者向け】パワークエリ入門:ETLツールを使ってエクセルデータを簡単に整形・統合しよう!(1/11)
-
【実践ガイド】パワークエリでデータ収集:Excel、CSV、PDF、Webデータを簡単に取り込む方法をマスターしよう!(2/11)
-
【総力特集】パワークエリで列操作をマスター:選択、変更、移動、削除、結合、分割の詳細解説&実践テクニック!(3/11)
-
【徹底解説】パワークエリで行操作をマスター!フィルター・保持・削除テクニックと練習用エクセルで実践学習(4/11)
-
パワークエリでデータクレンジング: 文字列結合、0埋め、テキスト関数をマスター(5/11)
-
パワークエリで四捨五入、切り捨て、切り上げをマスターする方法(6/11)
-
パワークエリで効率的なデータグループ化を実現する方法(7/11)
-
パワークエリで時間と日付の計算をマスター!便利な関数を使って効率アップ(8/11)
-
パワークエリで条件別集計をマスターする方法(9/11)
-
Excelパワークエリでクロス集計表とデータベース形式を瞬時に変換する方法(10/11)
-
Excelパワークエリ入門: 効率的なデータ整理をマスターしよう!(11/11)
パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください
コメント