Исправьте переменную undefined в Access VBA, чтобы отключить автоматический расчет с помощью Application.Calculation = xlCalculationManual. - PullRequest
1 голос
/ 29 марта 2019

Я хочу ускорить модуль с Access VBA, который записывает некоторые данные в Excel-файлы. Проблема в том, что в строке «objExcel.Application.Calculation = xlCalculationManual» VBA говорит, что «xlCalculationManual» является «неопределенной переменной». То же самое для «xlCalculationAutomatic». Кто-нибудь знает как это исправить?

Я попытался использовать это , определив значения для «xlCalculationManual» как -4135 (как Const и как Integer, оба не работали), так и для «xlCalculationAutomatic» -4105. (См. Ссылку).

'First try
[...]
Dim objExcel As Object
Set objExcel = CreateObject("excel.application")    
objExcel.Application.Visible = False
objExcel.Application.Calculation = xlCalculationManual
[...]
objExcel.Application.Visible = True
objExcel.Application.Calculation = xlCalculationAutomatic
[...]

'Second try
[...]
Dim objExcel As Object
Dim xlCalculationManual As Integer
xlCalculationManual = -4135
Dim xlCalculationAutomatic As Integer
xlCalculationAutomatic = -4105

Set objExcel = CreateObject("excel.application")    
objExcel.Application.Visible = False
objExcel.Application.Calculation = xlCalculationManual
[...]
objExcel.Application.Visible = True
objExcel.Application.Calculation = xlCalculationAutomatic
[...]

'Third try
[...]
Dim objExcel As Object
Const xlCalculationManual = -4135
Const xlCalculationAutomatic = -4105
Set objExcel = CreateObject("excel.application")    
objExcel.Application.Visible = False
objExcel.Application.Calculation = xlCalculationManual
[...]
objExcel.Application.Visible = True
objExcel.Application.Calculation = xlCalculationAutomatic
[...]

'Forth try
[...]
Dim objExcel As Object
Set objExcel = CreateObject("excel.application")    
objExcel.Application.Visible = False
objExcel.Application.Calculation = -4135
[...]
objExcel.Application.Visible = True
objExcel.Application.Calculation = -4105
[...]

1 Ответ

0 голосов
/ 29 марта 2019

Это потому, что вы используете позднюю привязку. Переключиться на раннее связывание :

  • установить ссылку на библиотеку объектов Microsoft Excel 16.0
  • изменить код -

как это:

 Dim objExcel As Excel.Application

Тогда ваш код будет знать перечисления и константы Excel.

...