使用Word VBA更新Excel链接图表源

使用Word VBA更新Excel链接图表源,vba,ms-word,Vba,Ms Word,我试图在MS Word中设置一个按钮来更新图表后面链接的Excel数据源。我要说的是,我知道这很容易与内置的功能,但我想使用一个按钮,为那些不舒服的导航菜单。另外,我已经阅读了一些关于这个主题的优秀文章,但我得到了一个错误,这些文章中没有提到 测试表明,单词a)将Excel链接标识为字段(与形状相对),b)将该字段标记为87型(OCX)。当我运行下面的代码时,它会生成一个“object variable或With block variable not set”错误。但是,这似乎可能是基于此的字段

我试图在MS Word中设置一个按钮来更新图表后面链接的Excel数据源。我要说的是,我知道这很容易与内置的功能,但我想使用一个按钮,为那些不舒服的导航菜单。另外,我已经阅读了一些关于这个主题的优秀文章,但我得到了一个错误,这些文章中没有提到

测试表明,单词a)将Excel链接标识为字段(与形状相对),b)将该字段标记为87型(OCX)。当我运行下面的代码时,它会生成一个“object variable或With block variable not set”错误。但是,这似乎可能是基于此的字段类型

我正在努力寻找另一种方法,希望能得到帮助。。。这是我第一次尝试VBA for Word。谢谢

Sub CommandButton1_Click()
Dim MyNewFile As Variant
Dim fDialog As FileDialog, result As Integer
Dim fieldCount As Integer

'Set up file dialog
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
    .AllowMultiSelect = False
    .Title = "Select a file"
    .Filters.Clear
    .Filters.Add "Excel files", "*.xlsx,*.xlsb,*.xlsm,*.xls"
End With

'Show the dialog, store the file name
If fDialog.Show = -1 Then
   MyNewFile = fDialog.SelectedItems(1)
End If

fieldCount = ActiveDocument.Fields.Count
For k = 1 To fieldCount
    With ActiveDocument.Fields(k)
    If .Type = 87 Then
     With .LinkFormat
        .SourceFullName = MyNewFile 'BLOWS UP HERE
        .AutoUpdate = True
     End With
     End If
    End With
Next k

End Sub

嗯,FWIW基本语法
ActiveDocument.Fields([index]).LinkFormat.SourceFullName=“硬编码文件路径”
对我来说很好。您可以通过硬编码来进行测试—没有循环,没有文件对话框—只需检查非常基本的语法即可。另外,查看原始源Excel文件/图表是如何构造的,并将其与您尝试更改的源Excel文件/图表进行比较。如果这并不能引导你找到任何东西,请在这里发布内部字段代码,这样我们就可以看到我们正在处理的链接字段的类型。@Cindymister你很了不起,有两个原因,我已经准备好了。通过检查代码,你上面的评论让我意识到我选错了树-我认为是文档中的一个链接的“字段”实际上指的是按钮。你的另一篇帖子帮助我找到了正确的方法——我检查了形状,但甚至不知道如何检查图表使用的内线形状。经过调整后,图表和表格的一切都正常了。@Cindy列出了一个小问题,这个问题只与上述问题有切身关系。我在当地一切都做得很好。然而,当我指向一个网络位置时,图表/InlineShape工作得很好,但是表格/字段阻塞了。这是试图指向同一个文件的副本,奇怪的是,我是否使用VBA或文件->信息等菜单。使用新对象也可以,但不会切换现有对象。你知道什么能做到吗?再次感谢您的专业知识!!不,网络不是我的专业领域。由于这也发生在最终用户模式下,您可以尝试在超级用户上询问。在网络中工作较多的人可能会获得更多信息。