我是VBA和宏的新手,这是我第一次尝试编码。所以...我有一个Word文档,可以用作生成报告的模板。 Word文档具有链接到excel文档的表格/图表。我正在尝试创建一个宏,该宏将使用word文档中链接的现有源并将其更改/更新到新的所需位置。想法是让用户运行宏,然后提示您选择一个excel文件,该宏将自动更新所有表格和图表。
我收到一个
“运行时错误'91':对象变量或未设置块变量”
以下行的消息:
ActiveDocument.Fields(x).LinkFormat.SourceFullName = newFile
经过一些研究,我相信问题是我正在将对象变量分配给一个值。由于是对象,因此需要“设置”哪个?因此,我尝试将行更改为以下
Set ActiveDocument.Fields(x).LinkFormat.SourceFullName = newFile
得到一个
代码“编译错误:无效使用属性”
.SourceFullName
上的消息。
如前所述,我是一个完全的新手,现在实际上已经迷路了。任何建议和指示都将受到欢迎。将来,我有很多选择可以使报告的其他方面实现自动化,但这是报告过程的主要时间消耗者,也是我从此开始的原因。
谢谢你们!
Sub changeSource()
Dim dlgSelectFile As FileDialog 'FileDialog object '
Dim thisField As Field
Dim selectedFile As Variant
Dim newFile As Variant
Dim fieldCount As Integer '
Dim x As Integer
Set dlgSelectFile = Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)
With dlgSelectFile
.Filters.Clear 'clear filters
.Filters.Add "Microsoft Excel Files", "*.xls, *.xlsb, *.xlsm, *.xlsx" 'filter for only Excel files
'use Show method to display File Picker dialog box and return user's action
If .Show = -1 Then
For Each selectedFile In .SelectedItems
newFile = selectedFile 'gets new filepath
Next selectedFile
Else 'user clicked cancel
Exit Sub
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
MsgBox "Source data has been successfully imported."
End Sub