请使用通过ODAC连接到oracle数据库的VB分享您关于刷新Excel工作表的想法。
我的代码如下。当前问题是在刷新后台查询之前文件已被保存。
Set oExcel = CreateObject("Excel.Application")
' Disable Excel UI elements
oExcel.Visible = False
oExcel.DisplayAlerts = False
oExcel.AskToUpdateLinks = False
oExcel.AlertBeforeOverwriting = False
Set oWorkbook = oExcel.Workbooks.Open("C:\Excel\InitialRefreshableSheet.xlsx")
oWorkbook.RefreshAll
oWorkbook.WorkSheets(1).Cells(1, 1).Value = Now()
DStr = FormatDateTime( Now, vbLongDate)
oWorkbook.Saveas ":\Excel\" & Dstr &".xlsx"
oWorkbook.Close
oExcel.Quit
有没有办法告诉vbs脚本在刷新操作完成之前暂停?
答案 0 :(得分:0)
而不是oWorkbook.RefreshAll
我会尝试通过将QueryTable.BackgroundQuery
属性设置为False
以获得适当的细胞范围来同步刷新:
For Each wks In oWorkbook.Worksheets
wks.Range("Xy").ListObject.QueryTable.Refresh _
BackgroundQuery = False
Next 'wks
或一般如下:
For Each wks In oWorkbook.Worksheets
For Each qs In wks.QueryTables
qs.Refresh BackgroundQuery = False
Next 'qs
Next 'wks
答案 1 :(得分:0)
我做了以下的工作。
从外部连接属性中取消选中“启用后台刷新”选项。
使用 oWorkbook.Connections(“ConnectionName”)。刷新而不是RefreshAll。
也使用异常处理。
If Err.Number <> 0 Then
'error handling:
WScript.Echo Err.Number & " Srce: " & Err.Source & " Desc: " & Err.Description
Err.Clear
oWorkbook.Close
oExcel.Quit
Set oWorkbook = Nothing
Set oExcel = Nothing
Else
oWorkbook.Saveas "E:\excel\newexcel.xlsx"
oWorkbook.Close
oExcel.Quit
Set oWorkbook = Nothing
Set oExcel = Nothing
End If