2016-05-13 7 views
0

マクロを使用してPublisherでOLEObjectsへのリンクを更新するプロセスを自動化する方法はありますか?私はこれを行う方法(主にPowerPointで)に関する議論をいくつか見つけましたが、2010 Publisherドキュメントにこれを適用しようとすると、いくつかの問題が発生しています。Publisherでvbaを使用してファイルへのリンクを更新する

最初に、メッセージボックスに.LinkFormat.SourceFullNameを表示すると、Excelワークシートまたはオブジェクトへの参照が、メニューオプションを使用してファイルへのリンクを編集するときにダイアログボックスで表示されるように表示されません。

第2に、.SourceFullNameとして表示されるファイル名を変更しようとすると、読み取り専用プロパティに割り当てることができないというコンパイルエラーメッセージが表示されます。

これについてのお手伝いがあれば幸いです。

次のコードを適用すると、新しいリンク名を割り当てるときにコンパイルエラーが発生します。 .SourceFullName = newlinkname行をコメントアウトすると、編集とOpenVerbsが利用可能であることを示すメッセージボックスが表示され、表示されるリンク名には「C:\ Desktop \ Projects \ old.xlsx」のみが含まれます。リボンを使用して[ファイルへのリンクを編集]コマンドを使用すると、オブジェクトにリンクされていると表示されているワークシートとチャートの参照は表示されません。そこでは、ダイアログボックスが実際に示しています!

old.xlsx H_A_CurrStat_byYrDxBar [old.xlsx] H_A_CurrStat_byYrDxBarチャート1

私はnew.xlsxするold.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 

答えて

0

https://msdn.microsoft.com/en-us/library/office/ff940537.aspx?f=255&MSPPError=-2147217396

すべてのオブジェクトを活性化するため、このコードを助けるかもしれない:

さらに良い
Sub ActivateOLEObjects() 
      Dim shpShape As Shape 

      For Each shpShape In ActiveDocument.Pages(1).Shapes 
        If shpShape.Type = pbLinkedOLEObject Then 
          shpShape.OLEFormat.Activate 
        End If 
      Next 
    End Sub 

それともし、リンクを更新するため、このコード例: https://msdn.microsoft.com/en-us/library/office/ff939544.aspx

Sub FindOLEObjects() 
      Dim shpShape As Shape 

      For Each shpShape In ActiveDocument.Pages(1).Shapes 
        If shpShape.Type = pbLinkedOLEObject Then 
          shpShape.LinkFormat.Update 
        End If 
      Next shpShape 
    End Sub 

の場合どちらも助けてくれないサンプルファイルや現在のコードのような詳細情報

関連する問題