Из специфики вопроса найти ответ в интеренет мне не удалось.
В общем внутри Excel я могу отключить автоматический пересчет формул с помощью
Код
Application.Calculation = -4135
Но если я создаю экзепляр приложения в Access:
Код
Dim excel_app as Object
Set excel_app = CreateObject("Excel.application")
excel_calculation = excel_app.Calculation 'Запоминаем текущее значение
excel_app.Calculation = -4135
То я получаю ошибку - Error 2042, причем уже в выражении:
Код
excel_app.Calculation
Т.е. я даже прочитать его не могу...
Соответственно я хочу выключить автоматический пересчет формул до открытия книги, открыть книгу, и вернуть настройки обратно. Но не могу
Dim excel_app, excel_calculation
Set excel_app = CreateObject("Excel.application")
msgbox excel_app.name
with excel_app.workbooks.add
'Запоминаем текущее значение
excel_calculation = excel_app.Application.Calculation
msgbox excel_calculation
excel_app.Application.Calculation = -4135
.close false
end with
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Спасибо! Вот так пришлось реализовать открытие книги, чтобы до открытия вырубить расчет и после закрытия вернуть обратно.
Код
Private excel_app As Object
Private excel_calculation As Integer
Private dummy_book As Object
Public source_file As String
Private Function Open_book()
Set excel_app = CreateObject("Excel.application")
Set dummy_book = excel_app.workbooks.Add
excel_calculation = excel_app.Application.Calculation
excel_app.Application.Calculation = -4135
Set Open_book = excel_app.workbooks.Open(source_file, False, True)
End Function
Private Sub Close_excel()
Dim book As Variant
For Each book In excel_app.workbooks
If Not book Is dummy_book Then book.Close False
Next book
excel_app.Application.Calculation = excel_calculation
Set excel_app = Nothing
dummy_book.Close False
End Sub
Sub Test()
source_file = "some file.xlsx"
With Open_book()
'do something
End With
Close_excel
End Sub