【Access VBA】指定テーブルの内容を指定Excelブックにエクスポートする

【Access VBA】指定テーブルの内容を指定Excelブックにエクスポートする

指定テーブルの内容を指定Excelブックにエクスポートする

この記事では「指定テーブルの内容を指定ブックにエクスポートする」ために利用可能な ExportTableToBook というユーザー定義関数について紹介します。 この情報が読者のお役に立てば幸いです。

解決できること

Microsoft Access の中でここで紹介する ExportTableToBook をマクロの中で呼び出すと指定された テーブル を %USERPROFILE%からの相対パスで指定された Excel ブックに簡単にエクスポートできます。

ここに %USERPROFILE% は Windows であらかじめ定義されている環境変数で Windows 10 搭載 PCを使っている利用者のデフォルトのフォルダパスを表しています。この環境変数については必要に応じて以下の記事を参照下さい。

【Windows業務効率化】バッチファイルの基本テクニックを知ろう

読んでほしい方

こうした Microsoft Access VBA を使ったアプリケーションをこれから作ろうと思っている方、今まで VBA によるアプリケーションを作ってきたが、そのツールを第三者に提供する際に、フォルダの保存パス名等の利用者個人に紐づいた環境差分をVBAのプログラムの中にじかに書くのに抵抗がある方。

 

ExportTableToBook  関数 の紹介

説明

指定された テーブル を %USERPROFILE% からの相対パスで指定された Excel ブックに簡単に エクスポート できます。

参照オブジェクト

この関数を利用するためにはこの関数の実行前に
データベースツール > Visual Basic > ツール > 参照設定

【Access VBA】指定テーブルの内容を指定Excelブックにエクスポートする

 

の中で

  • Microsoft Office 16.0 Access Database engine

にチェックを入れる必要があります。

利用例

例えば、現在このデータベースの中に以下のような issues というテーブルがあったとします。

【Access VBA】指定テーブルの内容を指定Excelブックにエクスポートする

 

この状態で Access のマクロ定義例えば “M0070_Call_ExportTableToBook ” の中で


If ExportTableToBook("Issues","Downloads\Issues.xlsx")>0
If文の最後

のように “Issues” 、 “Downloads\Issues.xlsx”といったパラメータを付けて呼び出します。

そしてこの “M0070_Call_ExportTableToBook ” のデザインビューを閉じ、この ”M0070_Call_ExportTableToBook” マクロをダブルクリックすると、この中で  ExportTableToBook が実行され

%USERPROFILE%\Downloads\Issues.xlsx

【Access VBA】指定テーブルの内容を指定Excelブックにエクスポートする

がエクスポートされていることがわかります。

 

引数

属性 意味
テーブル名 文字型 インポート元のテーブル名
Excel ブック名 文字型 %USERPROFILE%からの相対パスで指定された 出力Excelブック名

戻り値

意味
0 正常終了
1 異常終了

VBAコード


Function ExportTableToBook(table_name As String, output_xlsx_pathname As String) As Integer

  Const C_SUCCESS As Integer = 0
  Const C_FAILURE As Integer = 1

  Dim fullPathName As String

  fullPathName = Environ("UserProfile") & "\" & output_xlsx_pathname

  On Error GoTo exitWithFailure

  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, table_name, fullPathName

  ExportTableToBook = C_SUCCESS
Exit Function

exitWithFailure:
  ExportTableToBook = C_FAILURE
End Function

VBAコードの簡単な説明

行番号 説明
1 関数名と関数の戻り値の型(Integer:整数型)、入力パラメータ table_name (String:文字列型)、 output_xlsx_pathname (String:文字列型)の名前、型を定義しています。
3-4 このプログラムの中で利用する定数C_SUCCESS(0:成功)、C_FAILURE(1:失敗)を定義しています。ここでは17行目、21行目ででこの関数の戻り値が C_SUCCESS(0:成功)、C_FAILURE(1:失敗)であることが明確にわかるようなコーディングの仕方になります。
6-8

fullPathName を定義し、Environ 関数を使って求めた %USERPROFILE% と入力パラメータ output_xlsx_pathname  による絶対パス名を設定します。

10 この関数の実行中にエラーが発生したときの例外処理として、exitWithFailure にジャンプします。
12 DoCmd.TransferSpreadsheet  関数に  table_namefullPathName  を指定し table_name  の内容を fullPathName   で指定された Excel ブックにエクスポートします。
14-15 この関数の戻り値に C_SUCCESS(0:成功) を設定して関数を終わります。
17-19 この関数の戻り値に C_FAILURE (1:失敗) を設定して関数を終わります。
(注1) ADO (ActiveX Data Objects) : DAOの後継としてMicrosoftが仕様策定した統一的方法でデータベースを操作、参照するためのソフトウェア部品のパッケージおよびその呼び出し規約(API)。ActiveXコントロールとして様々なソフトウェアやプログラミング言語から共通の方法で簡単にデータベースにアクセスでき、また表計算ソフトのワークシートやCSVファイルなどを含む様々な形式のデータに同じ手順でアクセスすることができます。

まとめ

この記事では「指定テーブルの内容を指定ブックにエクスポートする」ために利用可能な ExportTableToBook というユーザー定義関数について紹介しました。 この情報が読者のお役に立てば幸いです。


ライブラリ一覧