Страницы: 1
RSS
Как отключить автоматический перерасчет Excel при открытии его из Access, ну не получается сделать это в лоб
 
Всем добрый день!

Из специфики вопроса найти ответ в интеренет мне не удалось.

В общем внутри 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
Т.е. я даже прочитать его не могу...

Соответственно я хочу выключить автоматический пересчет формул до открытия книги, открыть книгу, и вернуть настройки обратно.
Но не могу :(

Кто-нибудь с таким сталкивался?

UPD:
Excel, Access 2016. Win 10
Изменено: vetrintsev - 17.12.2018 09:25:50
 
vetrintsev, так работает:
Код
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
 
Цитата
JayBhagavan написал:
так работает:
Спасибо!
Вот так пришлось реализовать открытие книги, чтобы до открытия вырубить расчет и после закрытия вернуть обратно.
Код
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
Страницы: 1
Наверх