我已經編寫了VBA代碼,它接受一組excel文件,然後打開它們,刷新樞紐,保存並關閉文件。它適用於任何連接到SQL Server以刷新數據的工作簿。如果工作簿還包含內置關閉然後本身的過程中失敗,出現錯誤的工作簿中保存的數據的樞軸:VBA代碼將刷新SQL服務器源,但不是Excel源的樞紐
無法打開數據透視表源文件:「「\ NCH \ DFS \ SharedArea \私人\ BIS \ Groups \ KPI-Group \ Pivots \ [Hand-Hygiene-Audits.xls]] QPS'
正如我所說的數據透視表源與透視圖在同一張表內。如果我手動刷新工作簿中沒有問題。 (在這個例子中,QPS是手冊數據和關聯數據庫的標籤)
(請注意,我必須在路徑和文件名之間添加一個空格,因爲Stackoverflow代碼格式會在\ Pivots之後刪除一些反斜槓原因)
值得注意的是,方括號在文件名周圍並未正常顯示,它們似乎只出現在此錯誤消息中。我在網上搜索過,大多數討論過方括號問題的人都說它從IE下載了哪些文件。在我的情況下,所有三個受影響的文件都是從頭開始製作的。
處理刷新元素的代碼摘錄如下。如果您希望看到我的其他代碼,請告訴我,我會發布它。
有沒有人有任何想法是怎麼回事?
Sub Refresh_BoardPivots_Standard()
' On Error GoTo Errorhandler
Dim i
Dim errorText As String
Dim x
Dim objXL As Excel.Application
Set objXL = CreateObject("Excel.Application")
GetPivotsToRefresh ' populates array from SQL
For Each i In StandardBoardPiv
DoEvents
'If File_Exists(i) Then
If isFileOpen(i) = True Then
errorText = i
Failed(failedIndex) = errorText
failedIndex = failedIndex + 1
Else
objXL.Visible = True 'False
objXL.Workbooks.Open FileName:=i
If objXL.ActiveWorkbook.ReadOnly = False Then
BackgroundQuery = False
objXL.ActiveWorkbook.RefreshAll
objXL.Application.CalculateFull
objXL.Application.DisplayAlerts = False
objXL.ActiveWorkbook.Save
objXL.Application.DisplayAlerts = True
objXL.Quit
Else
errorText = i
Failed(failedIndex) = errorText
failedIndex = failedIndex + 1
objXL.Application.DisplayAlerts = False
objXL.Quit
Application.DisplayAlerts = True
End If
End If
' Else
' errorText = i
' Failed(failedIndex) = errorText
' failedIndex = failedIndex + 1
' End If
DoEvents
If Ref = False Then
Exit For
End If
Next i
Exit Sub
'Errorhandler:
'
'errorText = i
'Failed(failedIndex) = errorText
'failedIndex = failedIndex + 1
'Resume Next
End Sub