2014-09-07 2 views
0

ODAC를 통해 oracle 데이터베이스에 연결된 VB를 사용하여 Excel 시트를 새로 고치는 것에 대한 의견을 공유하십시오.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 스크립트에 지시하는 방법이 있습니까? 다음과 같이

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 

답변

0
내가 다음 않았다

과 대신 내가 적절한 셀 범위 (들)에 대한 FalseQueryTable.BackgroundQuery 속성을 settting에 의해 동 기적으로 새로 고침 것 oWorkbook.RefreshAll

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 
관련 문제