マクロを使用して、Publisher で OLEObjects へのリンクを更新するプロセスを自動化するにはどうすればよいですか? これを行う方法についての議論をいくつか見つけました (主に PowerPoint で)。これを 2010 Publisher ドキュメントに適用しようとすると、いくつかの問題が発生します。
まず、.LinkFormat.SourceFullName をメッセージ ボックスに表示すると、メニュー オプションからファイルへのリンクを編集するときにダイアログ ボックスに表示されるように、Excel ワークシートまたはオブジェクトへの参照がまったく表示されません。
次に、.SourceFullName として表示されるファイル名を単純に変更しようとすると、読み取り専用プロパティに割り当てることができないというコンパイル エラー メッセージが表示されます。
これについての助けをいただければ幸いです。
次のコードを適用すると、新しいリンク名を割り当てようとするとコンパイル エラーが発生します。.SourceFullName = newlinkname 行をコメント アウトすると、Edit および Open ObjectVerbs が使用可能であることを示すメッセージ ボックスが表示され、表示されるリンク名には「C:\Desktop\Projects\old.xlsx」のみが含まれます。リボンから [ファイルへのリンクの編集] コマンドを使用すると、オブジェクトにリンクされているワークシートとグラフの参照が表示されません。そこでは、ダイアログボックスに実際に次のように表示されます。
old.xlsx!H_A_CurrStat_byYrDxBar![old.xlsx]H_A_CurrStat_byYrDxBar チャート 1
マクロを使用してソース名を old.xlsx から new.xlsx に変更し、リンクされたオブジェクトを更新したいと考えています。
Option Explicit
Sub links()
Dim linkname As String
Dim newlinkname As String
Dim shpShape As Shape
Dim intCount As Integer
newlinkname = "C:\Desktop\Projects\new.xlsx"
For Each shpShape In ActiveDocument.Pages(1).Shapes
shpShape.OLEFormat.Activate
With shpShape.OLEFormat
For intCount = 1 To .ObjectVerbs.count
MsgBox .ObjectVerbs(intCount)
Next
End With
With shpShape.LinkFormat
linkname = .SourceFullName
'.SourceFullName = newlinkname
MsgBox linkname
End With
shpShape.LinkFormat.Update
Next
End Sub