Как ссылаться на объекты Excel в Access VBA? - PullRequest
13 голосов
/ 20 апреля 2011

Какие заявления я должен сделать, чтобы иметь возможность использовать объекты и константы Excel из моего сценария Access 2007 VBA?

Dim wb As Workbook

или

Set objExcelApp = New Excel.Application

или

.Borders(xlEdgeBottom)

Спасибо

Ответы [ 3 ]

29 голосов
/ 26 апреля 2011

Я не согласен с обоими ответами. Не создавайте ссылку вообще, а используйте позднюю привязку:

  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 не установлен.

12 голосов
/ 20 апреля 2011

Сначала необходимо установить ссылку (Меню: Инструменты-> Ссылки) на библиотеку объектов 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 через модуль доступа (так описал его в своем ответе шахкальпеш)

3 голосов
/ 20 апреля 2011

Внутри модуля

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...