我想使用VBA以編程方式刷新Word模板報表中的Excel表格。這些表格被寫入Matlab中的模板Excel文件中的幾張表格中。文件結構將如下所示:MS Word中的鏈接表
代碼將不得不檢查文件夾結構以查看它是否將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
編輯如下圖所示,複製和粘貼完成:
你有什麼錯誤嗎?什麼類型和在哪一行? –
我更新了代碼,因此如果Excel文件位於最新的文件夾中,它只會更新該鏈接的Excel文件中的表格。如果Excel文件不在最新的文件夾中,那就是問題所在。它必須找到舊的鏈接表來自的工作表並插入正確的行。它會在編譯錯誤時導致shpName = .LinkFormat.SourceName中斷 - 無效或不合格的引用。我不確定如何抓住舊的工作表並將其指向正確的行和列。有什麼幫助嗎? – user1854628