Access 2007 VBAスクリプトからExcelオブジェクトと定数を使用できるようにするには、どの宣言を作成する必要がありますか?
Dim wb As Workbook
または
Set objExcelApp = New Excel.Application
または
.Borders(xlEdgeBottom)
ありがとう
最初に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"
AccessでExcelを使用する別の方法は、Accessモジュールを介してExcelを起動することです(shahkalpeshが答えで説明した方法)
私は両方の答えに反対します。参照をまったく作成しないで、遅延バインディングを使用します。
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
上記のコードの唯一の違いは、変数がすべてオブジェクトとして宣言され、CreateObject()でExcelインスタンスをインスタンス化することです。
このコードは、インストールされているExcelのバージョンに関係なく実行されますが、参照を使用すると、異なるバージョンのExcelがインストールされている場合、または別の場所にインストールされている場合、コードが簡単に破損する可能性があります。
また、上記のコードにエラー処理を追加して、Excelインスタンスの初期インスタンス化が失敗した場合(Excelがインストールされていないか、正しく登録されていないなど)、コードを続行できます。参照セットを使用すると、Excelがインストールされていない場合、Accessアプリケーション全体が失敗します。
モジュール内
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