是否可以改变物品通过使用 VBA,如何实用地在 MS Word 中创建指向 Excel 电子表格的链接?
我发现关于如何更改文件源,但不是物品,如下所示编辑链接MS Word 2010 中的菜单:
已经有人问过同样的问题这里,但没有任何答案,大约 2 年前。我也调查过链接格式属性文档,它用于编辑链接的源,但却没有任何结果。
对于如何解决该问题的任何想法都将受到赞赏。
背景:我有一个 Excel 电子表格,用于向 word 文档提供数据。我试图将此文档用作模板,根据分析,我将更改向 word 文档提供数据的电子表格。电子表格中的表格(未格式化)的范围可能有所不同。但是,它们的列数相同。由于行数不同,我必须相应地更改项目字段。
编辑
我提供了 2 个示例文件作为该问题的 MWE。它们可以在以下位置找到这里。
答案1
我找到了一个解决方法。伊滕斯,我创建了一个 VBA 脚本来命名所有链接的范围。因此,我没有更改 Word 中的链接项,而是更改了 excel 中的命名范围值。链接项保持不变,但它指向一个可以实际修改的范围。以下是我编写的用于将名称添加到范围的代码:
Sub CreateNamedRanges()
Dim i As Integer
For i = 1 To Worksheets.Count
sheetName = "Mysheet" & i
varName = "Myvar" & CStr(i)
Set Rng = Sheets(sheetName).Range("G6:I9")
ActiveWorkbook.Names.Add Name:=varName, RefersTo:=Rng
Next i
End Sub
这种方法的缺点是我必须手动重新创建(链接)我之前创建的所有连接。要更改文件源,我使用了问题链接中的代码。为了完整起见,我在这里写它:
Sub changeSource()
Dim dlgSelectFile As FileDialog 'FileDialog object
Dim thisField As Field
Dim selectedFile As Variant 'must be Variant to contain filepath of selected item
Dim newFile As Variant
Dim fieldCount As Integer
'create FileDialog object as File Picker dialog box
Set dlgSelectFile = Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)
With dlgSelectFile
'use Show method to display File Picker dialog box and return user's action
If .Show = -1 Then
'step through each string in the FileDialogSelectedItems collection
For Each selectedFile In .SelectedItems
newFile = selectedFile 'gets new filepath
Next selectedFile
Else 'user clicked cancel
End If
End With
Set dlgSelectFile = Nothing
'update fields
fieldCount = ActiveDocument.Fields.Count
For x = 1 To fieldCount
ActiveDocument.Fields(x).LinkFormat.SourceFullName = newFile
Next x
End Sub
最后,一次性更新所有链接:
Sub AutoOpen()
ActiveDocument.Fields.Update
End Sub