如何使用VB自动刷新可刷新的Excel工作表

时间:2014-09-07 10:49:18

标签: excel excel-vba vbscript vba

请使用通过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脚本在刷新操作完成之前暂停?

2 个答案:

答案 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