LoginSignup
6
6

More than 3 years have passed since last update.

【Access VBA】AccessからExcelを操作する方法

Last updated at Posted at 2020-09-05

本記事のコードはAccess 2013で記述しています。

Accessとは

Microsoftが提供するデータベース管理ソフトです。データベースとは、大量のデータを整理して蓄積し、必要なときにすぐに取り出せるように管理しているシステムのことを言います。データを表(テーブル)として管理する「リレーショナルデータベース」方式のひとつです。SQLの知識がなくてもテーブル操作ができるのが大きな特徴といえます。
Accessに関して詳しく知りたい方は、以下リンクをご覧ください。
Microsoft Access

AccessからExcelを操作しようと思った理由

私の部署では業務管理システムにAccessが採用されています。
報告書作成から担当情報の閲覧等までPC業務の大半はこのシステムを介して行われます。
故に、このシステムからなんでも操作できた方がユーザー的にはありがたい。
Accessは先ほど記述した通り、Microsoft製のアプリケーションなので、
先日記事で投稿した、「Excel VBAと出会ったきっかけ」のExcelVBAプログラムもコードコピペするだけで、Accessにそのまま組み込めるのではないかと天才的に閃いた。

さっそくやってみた

UIにコマンドボタンをテキトーに一つ置いてクリックイベントでコードをコピペして実行、、、

が、全然ダメ! 圧倒的エラー!!!

当たり前だが、"ExcelVBA = AccessVBA"とはいかないらしい、、、

本題(操作方法)

茶番はここまでにしておこう(笑)
AccessからExcelを操作する場合、まずExcelアプリケーションを起動させオブジェクト変数に格納する必要がある。

AccessVBA
    Dim objExcel As Object, objWb As Object, objWs As Object
    Set objExcel = CreateObject("Excel.Application")
    Set objWb = objExcel.Workbooks.Open("ブックのパス")
    Set objWs = objWb.Worksheets("シート名")

変数に格納するのはobjExcelだけでもいいが、
上記のようにブックやシートも変数に格納した方がスマートだろう。

オブジェクト変数を格納したらまずやるべきことがある。

    objExcel.Visible = True     'エクセル可視(True)/不可視設(False)

Excelの可視化設定をTrueに返すことだ。

"Accessではデフォルトの設定でExcel起動時の可視化設定がFalseになっている。"
つまり、タスクバーにもどこにもExcelが表示されず、目視ではExcelが起動しているかどうかもわからない。

プログラムを実行してエラーが起きた場合、プログラムで作成したブックを削除しようとしても、PC上ではブックが開いた状態なので削除できないみたいなことが起こりうる。
プログラムが狙い通り動くまでは可視化にしておくのが無難だろう。

本線に戻ろう。

    objWs.cells(1, 1).Select 'A1セルを選択
    objWb.Save 'ブックを閉じる

シートを操作する場合はobjWs、ブックを操作する場合はobjWbを先頭につける。

一連の処理が終了したら、

    Set objWs = Nothing
    Set objWb = Nothing
    objExcel.Quit 'Excelを終了

オブジェクト変数を解除し、Excelを終了する。

注意点

本題の部分を押さえていれば基本的に問題はない。
しかし、Access VBAでは、Excel VBAでデフォルトで使えるメソッド等が使えないことも少なくない。一つ例を挙げると、表の最終行を取得するのによく使われる.End(xlDown)xlDownは、Accessではサポートされていない。

対処法>どちらか一方をすればOK
・ツール⇒参照設定で Excel "" Object Libraryを追加する
xlDownに代替する数字を入れる(以下リンク参照)
 https://docs.microsoft.com/ja-jp/office/vba/api/excel.xldirection

 

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6