Excel VBAを用いたWord文書内のクリップアートのサイズ一括変更方法

Excel VBAは、単なる表計算ツールとしてのExcelを超え、他のOffice製品との連携や日常業務の自動化を強力にサポートします。今回は、Excel VBAを利用してWord文書内に存在するクリップアートのサイズを一括で変更する方法について詳しく解説します。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本的なコード

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文書内のクリップアートのサイズを効率的に一括変更することが可能です。基本的なコードをマスターした後は、応用例を参考にして、より具体的なニーズに合わせてカスタマイズすることができます。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次