Excel VBAは、単なる表計算ツールとしてのExcelを超え、他のOffice製品との連携や日常業務の自動化を強力にサポートします。今回は、Excel VBAを利用してWord文書内に存在するクリップアートのサイズを一括で変更する方法について詳しく解説します。
目次
基本的なコード
Word文書内のクリップアートのサイズを一括で変更する基本的なVBAコードは以下の通りです。
Sub ResizeClipArtInWord()
Dim wdApp As Object, wdDoc As Object
Dim shp As Object
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open("C:\path\to\your\document.docx")
For Each shp In wdDoc.InlineShapes
If shp.Type = 3 Then ' 3 is the type for Clip Art
shp.Width = 100 ' Set width to 100 points
shp.Height = 100 ' Set height to 100 points
End If
Next shp
wdDoc.Close SaveChanges:=True
Set wdDoc = Nothing
wdApp.Quit
Set wdApp = Nothing
End Sub
このコードでは、Word文書を開き、文書内のすべてのインライン図形を走査して、クリップアートの場合にのみサイズを変更します。
コードの詳細解説
1. `Dim`で必要な変数を宣言します。
2. Wordのアプリケーションを開き、指定したパスの文書を開きます。
3. `For Each`ループを使用して、文書内のすぐの図形をループ処理します。
4. `shp.Type = 3` この条件は、図形がクリップアートであるかを判断します。3はクリップアートのタイプを示すコードです。
5. クリップアートのサイズを変更します。
6. 変更を保存して文書を閉じ、Wordのアプリケーションを終了します。
応用例
1. 特定のサイズ以下のクリップアートだけを変更する
Sub ResizeSmallClipArtInWord()
'... 以前のコードは同じ ...
For Each shp In wdDoc.InlineShapes
If shp.Type = 3 And shp.Width < 50 Then
shp.Width = 100
shp.Height = 100
End If
Next shp
'... 続き ...
End Sub
2. クリップアートの縦横比を維持しながらサイズを変更する
Sub ResizeClipArtKeepAspectRatio()
'... 以前のコードは同じ ...
Dim aspectRatio As Double
For Each shp In wdDoc.InlineShapes
If shp.Type = 3 Then
aspectRatio = shp.Width / shp.Height
shp.Width = 100
shp.Height = 100 / aspectRatio
End If
Next shp
'... 続き ...
End Sub
3. クリップアートのサイズを指定した倍率で変更する
Sub ResizeClipArtByRatio()
'... 以前のコードは同じ ...
Dim ratio As Double
ratio = 1.5 ' Resize to 150%
For Each shp In wdDoc.InlineShapes
If shp.Type = 3 Then
shp.Width = shp.Width * ratio
shp.Height = shp.Height * ratio
End If
Next shp
'... 続き ...
End Sub
まとめ
Excel VBAを利用することで、Word文書内のクリップアートのサイズを効率的に一括変更することが可能です。基本的なコードをマスターした後は、応用例を参考にして、より具体的なニーズに合わせてカスタマイズすることができます。
コメント