Как ссылаться на объекты Excel в Access VBA?
Какие объявления я должен сделать, чтобы иметь возможность использовать объекты и константы Excel из моего скрипта Access 2007 VBA?
Dim wb As Workbook
или же
Set objExcelApp = New Excel.Application
или же
.Borders(xlEdgeBottom)
Спасибо
3 ответа
Сначала вам нужно установить ссылку (Меню: Инструменты-> Ссылки) на библиотеку объектов Microsoft Excel, затем вы можете получить доступ ко всем объектам Excel.
После добавления ссылки вы получаете полный доступ ко всем объектам Excel. Вам нужно добавить Excel перед всем, например:
Dim xlApp as Excel.Application
Допустим, вы добавили объект Excel в свою форму и назвали его xLObject.
Вот как вы получаете доступ к листу этого объекта и изменяете диапазон
Dim sheet As Excel.Worksheet
Set sheet = xlObject.Object.Sheets(1)
sheet.Range("A1") = "Hello World"
(Я скопировал вышеизложенное из моего ответа на этот вопрос)
Другой способ использования Excel в Access - это запустить Excel через модуль доступа (так описал его шахкальпеш в своем ответе).
Я не согласен с обоими ответами. Не создавайте ссылку вообще, а используйте позднюю привязку:
Dim objExcelApp As Object
Dim wb As Object
Sub Initialize()
Set objExcelApp = CreateObject("Excel.Application")
End Sub
Sub ProcessDataWorkbook()
Set wb = objExcelApp.Workbooks.Open("path to my workbook")
Dim ws As Object
Set ws = wb.Sheets(1)
ws.Cells(1, 1).Value = "Hello"
ws.Cells(1, 2).Value = "World"
'Close the workbook
wb.Close
Set wb = Nothing
End Sub
Вы заметите, что единственное отличие в приведенном выше коде состоит в том, что все переменные объявлены как объекты, и вы создаете экземпляр Excel с помощью CreateObject().
Этот код будет выполняться независимо от того, какая версия Excel установлена, а использование ссылки может легко привести к поломке вашего кода, если установлена другая версия Excel или если она установлена в другом месте.
Кроме того, обработку ошибок можно добавить в приведенный выше код, чтобы в случае сбоя первоначального создания экземпляра экземпляра Excel (скажем, из-за того, что Excel не установлен или неправильно зарегистрирован), ваш код может продолжаться. При наличии набора ссылок все приложение Access не будет работать, если Excel не установлен.
Внутри модуля
Option Explicit
dim objExcelApp as Excel.Application
dim wb as Excel.Workbook
sub Initialize()
set objExcelApp = new Excel.Application
end sub
sub ProcessDataWorkbook()
dim ws as Worksheet
set wb = objExcelApp.Workbooks.Open("path to my workbook")
set ws = wb.Sheets(1)
ws.Cells(1,1).Value = "Hello"
ws.Cells(1,2).Value = "World"
'Close the workbook
wb.Close
set wb = Nothing
end sub
sub Release()
set objExcelApp = Nothing
end sub