Accessでデータを蓄積した後、Excelにデータを出力するケースは多々見られますが、その際に新規にExcelワークブックを作成して必要情報をアウトプットできるようになると、業務効率を大幅に改善できます。
今回は、Access VBAを用いてExcelブックを作成する方法を見ていきましょう。
サンプルソースコードについて
早速、サンプルソースコードを見ていきましょう。
Private Sub ExcelBook()
Dim xlApp As Object 'Excelオブジェクト向け変数
Dim wb As Object 'Excelワークブック向け変数
Dim ws As Object 'Excelワークシート向け変数
Dim FilePath As String 'Excel保存先パス向け変数
'Excelを起動する
Set xlApp = CreateObject("Excel.Application")
'開いたExcelでワークブックを追加する。
Set wb = xlApp.Workbooks.Add
'一つ目のワークシートを参照する。
Set ws = wb.WorkSheets(1)
'ワークシートの名前を変更する。
ws.Name = "DATA"
'Excelファイルの保存先を決める。
'ファイル名を今日の日付の「YYMMDD」形式とする。
FilePath = CurrentProject.Path & "\" & Format(Date, "yymmdd") & ".xlsx"
'ワークブックを保存する。
wb.SaveAs FilePath
'ワークブックを閉じる。
wb.Close
'変数を解放する。
Set xlApp = Nothing
Set wb = Nothing
Set ws = Nothing
'作成したExcelファイルを開くか確認する。
If MsgBox("作成したExcelファイルを開きますか?", vbYesNo) = vbYes Then
Shell "Excel.exe " & FilePath, vbNormalFocus
End If
End Sub
まずは、各変数を宣言します。Excel VBAと異なり、アプリケーション、ワークブック、ワークシートに係る変数は「Object型」としますので注意してください。
次に、Excelを起動し「xlApp」変数にオブジェクトを格納します。
さらに、ワークブック、ワークシートのオブジェクトもそれぞれ「wb」及び「ws」変数に格納します。この際に「WorkSheets(1)」としていますが、2つ以上のワークシートがある場合、カッコ内の数字でシートを指定することができます。
そして、ワークシートの名前を「DATA」と変更します。
続いて、Excelファイルの保存先を指定しますが、ここでは「CurrentProject.Path」からAccessファイルの保存先フォルダを指定し、ここに本日の日付を「YYMMDD」形式としたファイル名で保存することとしています。
Format関数による形式変換の方法は、以下の記事をご参照ください。
これで、ワークブックの保存先まで指定することができました。
実際には、この後にAccessのデータをExcelへアウトプットする処理をコーディングしますが、ここでは割愛し、作成したExcelファイルの保存処理に移ります。
先に指定した保存先にExcelファイルを保存し、Excelを閉じます。
変数はガーベージコレクションをするために「Set ~ = Nothing」の処理を加えます。
最後に、作成したExcelファイルを開くかを確認し、「はい」を選んだ場合にShell関数を用いて作成したファイルを開くようにしています。
Shell関数の使い方は以下の記事をご参照ください。
Excelが開かれると図1のようになっていると思います。

まとめ
今回は、AccessからExcelファイルを作成する方法を紹介しました。比較的簡単なコードで実装することができ、またAccessからExcelへのデータ移行処理を実装することで業務効率を大幅に改善することが期待できますので、是非試してみてはいかがでしょうか。
今回紹介した内容は、以下の書籍でも紹介されていますので、お手元に1冊用意されると良いと思います。
スポンサーリンク




コメント