本記事では Access ツール 18_02.accdb を修正し、テーブルの Excel ブックへのエクスポート方式を 記事#14 で紹介した リボンメニューの外部データから Excel を選択し出力を絶対パス名で指定してエクスポートし、このエクスポート操作を保存してマクロ内のアクションで指定する方式 から しらかば堂の Access VBA 関数ライブラリ ExportTableToBook を利用して マクロの中で対象テーブルと出力 Excel ブック名を相対パス名で指定する方式 に変更するやり方について紹介します。
これは Access ツール 18_02.accdb ヘの 記事#30 に続く次のリファクタリング(改善)方針の実現方法に対応しています。
項番 | 解決したい課題 | リファクタリング(改善)方針 |
---|---|---|
13 | ツールからの絶対パス情報を相対パス情報に変更 | 18_02.accdb の T1040_日付_退院者数_入院者数_退院率 テーブルの T1040_日付_退院者数_入院者数_退院率.xlsx への エクスポート処理を しらかば堂のユーザー定義関数(VBA) ExportTableToBook による相対パス指定に変更します。 |
目次
Access VBA を使いテーブルをExcelブックにエクスポートしよう
何故 Access VBA を使ってテーブルをExcelブックにエクスポートするのか
まず以下はリファクタリング(改善)前の18_02.accdb の中の M1000_作成T1040日付退院者数入院者数_退院率 マクロを再度確認しましょう。
このマクロの中の赤で囲った 保存済みのインポート/エクスポート操作の実行 アクション で
エクスポート-T1040_日付退院者数入院者数_退院率
という操作を実行しています。
この操作は実施どのように定義されているかを確認するためにリボンメニューから
外部データ > 保存済みのエクスポート操作
を順にクリックして表示される データタスクの管理 画面の中で
T1040_日付退院者数入院者数_退院率 テーブルのエクスポート先を
C:\Users\devel\Documents\Desktop\T1040_日付退院者数入院者数_退院率.xlsx
という絶対パス定義で指定しています。
この定義は 記事#14
の中で紹介した リボンメニューの外部データから Excel を選択し出力を絶対パス名で指定してエクスポートし、このエクスポート操作を保存してマクロ内のアクションで指定しているわけですが、このやり方だとこういったツールを社内のグループ内で横展開しようと思った場合に、展開するユーザーごとにこのエクスポート操作を行いエクスポート操作を保存する必要があるため、ツールの横展開の障壁の1つになる可能性があります。
従って展開する相手のPCに
で紹介したバッチツールで標準的なツール用のフォルダ環境を作成してもらい、続いてこのエクスポート先のブック名を VBA を利用したマクロの中で各ユーザーのPCの %USERPROFILE% からの相対パス名で指定することでこの障壁をなくそうという訳です。
この %USERPROFILE% については必要に応じて
も参照して下さいね。
関数ライブラリ ExportTableToBook の組み込み方
このしらかば堂の Access VBA 関数ライブラリ ExportTableToBookを Access に組み込む際は
リボンメニューの
データベースツール > Visual Basic
を順にクリックして VBE(Visual Basic Editor) を起動し
VBE のメニューから
挿入(I) > 標準モジュール(M)
を順にクリックして標準モジュールを挿入し
現れたコードウインドウに
から VBAコードをコピーし、VBEのコードウインドウにペーストし、さらにオブジェクトの参照設定で以下のような EnjoyTech 等の参照設定を行ってVBEを閉じ
次に紹介する M1010_Call_ExportTableToBook マクロからこの関数を呼び出することでこのExportTableToBook関数を組み込みます。
M1010_Call_ExportTableToBook マクロ の作り方
では実際にこの ExportTableToBook関数を呼び出すための M1010_Call_ExportTableToBook マクロを作成しましょう。
ここではマクロビルダを使って M1010_Call_ExportTableToBook マクロの中に次のようなアクションを記述します。
If ExportTableToBook("T1040_日付_退院者数_入院者数_退院率","Tools_Data_Temp\xlsx\T1040_日付_退院者数_入院者数_退院率.xlsx")>0
If文の最後
この M101M1010_Call_ExportTableToBook マクロが ExportTableToBookを呼び出すためのパラメータは以下のとおりです。
パラメータ番号 | 記述されたパラメータ値 | 説明 |
---|---|---|
1 | “T1040_日付_退院者数_入院者数_退院率“ | エクスポートしたいテーブル名 を記述します。 |
2 | “Tools_Data_Temp\xlsx\T1040_日付_退院者数_入院者数_退院率.xlsx“ | エクスポート先の Excel ブック名を %USERPROFILE% からの相対パス名で記述します。 |
また 記事#30 で紹介した M0000_Call_LinkExternalDbTable マクロの実行アクション、 M1010_Call_ExportTableToBook マクロの実行アクションを加えた最終的な autoexec マクロを以下のようにします。
まとめ
いかがでしたか?
本記事では テーブルの Excel ブックへのエクスポート方式を 記事#14 で紹介した リボンメニューの外部データから Excel を選択し出力を絶対パス名で指定してエクスポートし、このエクスポート操作を保存してマクロ内のアクションで指定する方式 から しらかば堂の Access VBA 関数ライブラリ ExportTableToBook を利用して マクロの中で対象テーブルと出力 Excel ブック名を相対パス名で指定する方式 で実現する方法を紹介しました。
次の記事では 記事#24
で紹介した Access VBA を使ったExcel のブック間処理を行っている 23_01.accdb に対するリファクタリング(改善)の内容について具体的に紹介します。
さてこの記事全体の目標は
- 今の状況から抜け出してもっと前向きな仕事に取り組みたい
- さっさと仕事を切り上げて充実したアフターファイブを過ごしたい
でしたよね。
あなたの解決したい問題は何ですか?
次回はまた
で Access VBA の新しい窓を開きましょう。
Microsoft Access 関連教材は次のリンクからどうぞ。
いつも記事を読んで頂きありがとうございます~
今日の調子はいかがですか?