リンクされた画像を含むWord文書があります。それらをWord文書に埋め込みたいのですが、手動で埋め込みたくありません。
手動で移動:[ファイル]-> [ファイルへのリンクを編集]-> [リンクを解除]を選択して押すと、まさに私がやりたいことが実行されます。
フィールドへのリンクを解除するためのVBAコードをいくつか見つけましたが、それは私の写真へのリンクを解除するのに役立ちません。これが私が試したコードです:
For Each objField In ActiveDocument.Fields
If Not objField.LinkFormat Is Nothing Then
objField.LinkFormat.Update
objField.LinkFormat.BreakLink
ActiveDocument.UndoClear
End If
Next
ヒットしたとき Alt + F9 私のドキュメントでは、フィールドを表示するために私の写真には何も起こりませんが、他のフィールド(リンクなど)は展開/表示されます。したがって、これらの画像リンクは「フィールド」以外のものであると思います。
VBAでこれらの画像リンクを解除するにはどうすればよいですか?
メモの編集 Word文書は基本的にhtmlファイルです。これは、Wordで.htmlファイルを開くことで得られるものです。
Word文書は実際にはWordで開かれたhtml文書であったため、フィールドを識別するためのWord固有のマークアップは含まれていませんでした。その結果、GUI機能は機能しましたが、質問で詳しく説明されているvbaソリューションは機能しませんでした。解決策は、最初にWord文書を新しい名前で保存し(したがって、Wordマークアップを生成し)、次にbreakLinksマクロを実行することでした。
ドキュメントを保存するためのマクロ:
Sub saveAsDoc()
Dim newName As String
newName = ActiveDocument.Path & "\" & "fix_" & ActiveDocument.Name
ActiveDocument.SaveAs2 FileName:=newName, FileFormat:=wdFormatDocument
End Sub
リンクを解除するためのマクロ:
Sub breakLinks()
For Each objField In ActiveDocument.Fields
If Not objField.LinkFormat Is Nothing Then
objField.LinkFormat.Update
objField.LinkFormat.BreakLink
ActiveDocument.UndoClear
End If
Next
End Sub
外部スクリプトから実行する必要があるメインマクロ。 displayAlertsは、ポップがないことを確認するためのものです。
Sub theTrick()
Application.DisplayAlerts = False
Call saveAsDoc
Call breakLinks
ActiveDocument.save
Application.DisplayAlerts = True
End Sub