从Excel

时间:2017-12-20 11:34:11

标签: excel vba excel-vba word-vba

我有一个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

我怀疑它无法正常工作,因为宏在文档完全加载之前试图破坏链接(因此现有的链接没有机会更新?),这就是我添加等待的原因。不幸的是,这似乎不是解决方案。

1 个答案:

答案 0 :(得分:0)

上面的代码一切都很好,但是如果文本在文本框中,我没有意识到代码必须是不同的。

我努力打破文本框中的链接,并不断收到运行时错误438.但是,我找到了一个解决方法:

我在文档中写了一个子文章:

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