2016-07-05 13 views
0

這段代碼適合我,唯一的問題是,我打開的工作簿是一個相當大的文件,並且需要花費很長時間才能打開,從而減慢了啓動速度我的程序。有什麼辦法可以加快速度嗎?我只打開的文件被過濾並讀取,程序中沒有任何內容被寫入,也不需要保存。有什麼建議麼?加快Workbooks.Open在後臺

Application.ScreenUpdating = False 

On Error Resume Next 
Set xlWB = Workbooks.Open("\Item Setup\MODIFIED ITEM EXTRACT.xlsm") 

Application.ScreenUpdating = True 

PriceVerifier.Show 
+1

*一個相當大的文件* - 大文件需要大量的時間才能打開。您可以打開爲「只讀」(懷疑它會有幫助),並且還可以使用「更新打開」參數上的鏈接,如果這是一個因素。您也可以在該工作簿中編寫一個程序,該程序會在更新平面文件時隨時更新所需的信息,並在該程序中調用該較小的平面文件...不確定這是否可行,但只是將想法拋出。 –

+1

我不確定你需要怎樣處理工作簿,但如果這能幫助我寫出更好的答案。當我遇到類似問題時,我最終使用查詢來提取數據而不打開工作簿,然後將它放入已打開的工作簿中的數據透視表中。數據幾乎立即被提取出來。 – jcarroll

+0

您可以嘗試將設置計算設置爲手動,同時文件以'Application.Calculation = xlCalculationManual'打開文件# –

回答

0

在DBPath中輸入您自己的路徑,在測試字段中輸入您自己的字段,並在手動輸入中輸入您自己的工作表。離開$雖然。

Sub sbADOExample() 

    Dim sSQLQry As String 
    Dim Conn As New ADODB.Recordset 
    Dim rst As New ADODB.Recordset 
    Dim DBPath As String 
    Dim strConn As String 
    Dim strSQL As String 

    DBPath = "C:\user\testFile.xlsx" 

    strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBPath & ";" & _ 
       "Extended Properties=" & """" & "Excel 12.0 Xml;HDR=YES" & """;" 

    strSQL = "SELECT [Test Field] FROM [Manual Entry$] " 

    rst.Open strSQL, strConn 

    Sheet2.Range("A2").CopyFromRecordset rst 

    rst.Close 

End Sub