No.001
AccessからExcelを操作する 《CreateObject》
2003/2007/2010/2013/2016
AccessとExcelはよく連携してデータのやり取りを行うことがありますね。
そんな中で、AccessからExcelを操作するサンプルをご紹介します。
CreateObject関数を使用し、ActiveX オブジェクトの参照を作成、アプリケーションを操作します。
今回は該当のExcelファイルを開かずににシートを削除します。
Sub Sample()
Dim exApp As Object
Dim Wb As Object
Set exApp = CreateObject("Excel.Application")
exApp.Visible = False 'エクセル可視/不可視設定
exApp.DisplayAlerts = False '警告メッセージをオフ
Set Wb = ExApp.Workbooks.Open("パス¥ファイル名")
With Wb
.Worksheets("Sheet1").Delete
'任意の操作記述
.Save
.Close
End With
exApp.DisplayAlerts = True '警告メッセージをオン
exApp.Quit 'Excel終了
Set exApp = Nothing '参照を解放
MsgBox "完了しました。"
End Sub
記述で大事なことがありますので、先にご案内します。
CreateObject関数で作成した参照は、終了後解放しなければなりません。
オブジェクトの参照を解放するには、オブジェクト型変数にNothingを代入します。
ところで、今回はシートの削除をしています。
Excelを可視にしていると、データがあるシートを削除する際の警告メッセージが表示されると、そこで動作が一時止まります。
また、Excelを不可視の状態で実行しますと、警告メッセージによってシートが削除されずに残ってしまいます。
したがって、警告メッセージの記述は最初にオフにして実行し、最後はオンに戻してください。
ヘルプmemo
<CreateObject関数>
ActiveX データ オブジェクトへの参照を作成し、返します。
構文: CreateObject(class [, servername])
引数:
class …作成するオブジェクトのアプリケーション名とクラスを指定
servername …オブジェクトを作成するネットワーク サーバーの名前を指定
ヒント:
引数[class]は、appname.objecttype の形式で指定します。
引数[servername]を省略すると、ローカル コンピュータが使われます。
記述の最後には、参照を解放する必要があります。