我有一个excel电子表格链接到多个Word文档(.docx),它们充当模板。
我编写了一个宏,从excel打开所需的单词模板(选择的模板取决于单元格M17的值)。单词模板中的链接会在单词打开时自动更新。然后我试图打破我打开的文档的链接。这是我到目前为止:
Function FnOpeneWordDoc()
Dim objWord
Dim objDoc
Dim path As String
path = Range("M17")
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("*file_path*" & path & ".docx")
objWord.Visible = True
Application.Wait (Now + TimeValue("0:00:30"))
objDoc.Fields.Unlink
End Function
我怀疑它不起作用,因为宏在文档完全加载之前试图破坏链接(因此现有链接没有机会更新?),这就是我添加等待的原因。不幸的是,这似乎不是解决方案。
上面的代码本来没问题,但是如果文本在文本框中,我没有意识到代码必须是不同的。
我努力打破文本框中的链接,并不断得到运行时错误438.但是,我找到了一个解决方法:
我在word文档中写了一个子:
Sub Unlink
Selection.Fields.Unlink
End Sub
然后我从我的excel文档中调用了这个宏:
Sub FnOpeneWordDoc()
Dim objWord
Dim objDoc
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("filename")
objWord.Visible = True
For i = 1 To objDoc.Shapes.Count
objDoc.Shapes(i).Select
objDoc.Application.Run ("unlink")
Next
End Sub