Как ссылаться на объекты 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
Другие вопросы по тегам