【コード】選択した図をリンクして挿入するWordマクロ(その3)

前回の記事「選択した図をリンクして挿入する 」と「選択した図をリンクして挿入する(その2) 」に間違いがございました。

大変申し訳ありませんが、こちらに差し替えてください。

マクロ公開前の試運転が不足しており大変失礼いたしました。

前回ご紹介したマクロをご利用いただいたからからの別の質問の内容を調べていたら気がつきました。

このマクロでできること

「選択した図をリンクして挿入する(その2)でご紹介したものと同じです。

正確に言うと、「上記の記事で意図していたこと」です。

図を「ファイルにリンク」として挿入することを意図したマクロだったのですが、「挿入とリンク」を実行した状態となってしまっていました。

この場合、Word文書に図面自体も保存されるため、ファイルサイズは通常の図の挿入と同じになってしまいます。

今回は、意図したとおり、「ファイルにリンク」した状態で図が挿入されます。

この場合、図をいくら挿入してもファイルサイズがさほど大きくなりません。お試しください。

マクロの解説

17行目追加しました。

AddPicture のメソッドには、SaveWithDocumentというオプションがあります。これをFalseにしました。

前回マクロを作るときに、ヘルプを見て、この項目がオプション(入力の省略が可能という意味)となっており、既定の設定はFalseだったため、あえて記載せずにおりました。

しかし実際の挙動は、SaveWithDocument:=Trueとなってしまいました。

というわけで、省略せずに明示的にFalseの設定をしたところ、意図した動き(「ファイルにリンク」)になりました。

Wordマクロでは時々このようなことが起こるようです。

まだ勉強不足で発生する条件を特定できておりません。

「検索と置換」ダイアログボックスに連動したFindのプロパティ設定でも同様のことが見受けられます。

オプションやプロパティは明示的に設定することが大切ですね。

マクロ


Sub 選択した図をリンクして挿入するマクロ3()

 Dim myFilePath As String 'ファイルのパス
 Dim myFolderPath As String 'フォルダのパス

 myFolderPath = ActiveDocument.Path

 With Application.FileDialog(msoFileDialogOpen)
  .Title = "挿入する図を1つ選んでください。"
  .AllowMultiSelect = False
  .InitialFileName = myFolderPath & "\"
  If .Show = -1 Then
   myFilePath = .SelectedItems(1)
   Selection.InlineShapes.AddPicture _
     FileName:=myFilePath, _
     LinkToFile:=True, _
     SaveWithDocument:=False
  End If
 End With
  
End Sub

関連記事

マクロの登録方法  (ボタン化、ショートカットキーも紹介)

選択した図をリンクして挿入する

選択した図をリンクして挿入する(その2)

選択したファイルの「ファイルパス」と「フォルダパス」をゲット

FileDialog オブジェクトの使用 (MSDN)

トップへ戻る