2016-07-05 4 views
0

Этот код хорошо работает для меня, единственная проблема заключается в том, что рабочая книга, которую я открываю, представляет собой довольно большой файл, и требуется длительный период времени для открытия, замедляя запуск моя программа. Есть ли способ ускорить это? Файл, который я открываю, только фильтруется и считывается, в программе ничего не записано и не нужно сохранять. Какие-либо предложения?Ускорение рабочей книги. Откроется в фоновом режиме

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 
Смежные вопросы