MS Word中的链接表

我想使用VBA以编程方式刷新Word模板报表中的Excel表格。 这些表格是从Matlab的模板Excel文件中写入到几张表格中的。 文件结构如下所示: 在这里输入图像说明

代码将不得不检查文件夹结构以查看是否将Excel文件从最新的文件夹中提取出来。 如果是这样,它只会刷新所有的细胞。 如果不是,则必须删除所有的表格,并从前面的表格中插入新的表格。 我不确定下面星号之间的代码。 任何帮助将非常感激。

Sub LinkToCurrentTableFolder() 'Get current folder by date Dim clientTablesPath As Variant filePath = ActiveDocument.Path & "\ClientTables\" Set fso = CreateObject("Scripting.FileSystemObject") Set fld = fso.GetFolder(filePath) Dim currentFolder As Variant: currentFolder = "" For Each sf In fld.SUBFOLDERS 'Look at name and get current date If currentFolder = "" Then currentFolder = sf.Path ElseIf sf.Path > currentFolder Then currentFolder = sf.Path End If Next '*** 'Debug: display current Excel folder path 'MsgBox (currentFolder) If currentPath = currentFolder Then 'Loop through all tables in document and refresh 'If path is not current delete current table Dim tbTemp As Table Dim cellTemp As Cell For Each tbTemp In ActiveDocument.Tables For Each cellTemp In tbTemp.Range.Cells cellTemp.Range.Fields.Update Next Next Else 'Locate same file name in new folder shpName = .LinkFormat.SourceName NewPath = currentFolder & "\" & shpName 'Delete existing table (???) Not sure .Delete 'Create new table (???) Not sure - must be from same location and same size as previous one Selection.Table.AddOLEObject ClassType:=cType, FileName:=NewPath, LinkToFile:=True, DisplayAsIcon:=False End If '*** End Sub 

编辑 – 复制和粘贴完成如下所示: 在这里输入图像说明

我在这里find了我的答案 – 此代码要求提供新Excel文件的位置,并更新Excel链接表的所有字段代码。

该链接的代码如下。

 Public 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 ' Dim x As Long On Error GoTo LinkError 'create FileDialog object as File Picker dialog box Set dlgSelectFile = Application.FileDialog(FileDialogType:=msoFileDialogFilePicker) With dlgSelectFile .Filters.Clear 'clear filters .Filters.Add "Microsoft Excel Files", "*.xls, *.xlsb, *.xlsm, *.xlsx" 'filter for o nly Excel files '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 Exit Sub End If End With Set dlgSelectFile = Nothing 'update fields With ActiveDocument fieldCount = .Fields.Count For x = 1 To fieldCount With .Fields(x) 'Debug.Print x ' Debug.Print .Type If .Type = 56 Then 'only update Excel links. Type 56 is an excel link .LinkFormat.SourceFullName = newFile ' .Update .LinkFormat.AutoUpdate = False DoEvents End If End With Next x End With MsgBox "Source data has been successfully imported." Exit Sub LinkError: Select Case Err.Number Case 5391 'could not find associated Range Name MsgBox "Could not find the associated Excel Range Name " & _ "for one or more links in this document. " & _ "Please be sure that you have selected a valid " & _ "Quote Submission input file.", vbCritical Case Else MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical End Select End Sub