【連載】#31 Access VBA を使い テーブルをExcelブックにエクスポートしよう

【連載】#31 Access VBA を使い テーブルをExcelブックにエクスポートしよう
【連載】#30 Access VBA を使い 他の Access 内テーブルをリンクしよう
【連載】#31 Access VBA を使い テーブルをExcelブックにエクスポートしよう
しらかば堂

いつも記事を読んで頂きありがとうございます~
今日の調子はいかがですか?

本記事では 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 による相対パス指定に変更します。
【連載】#31 Access VBA を使い テーブルをExcelブックにエクスポートしよう

Access VBA を使いテーブルをExcelブックにエクスポートしよう

何故 Access VBA を使ってテーブルをExcelブックにエクスポートするのか

まず以下はリファクタリング(改善)前の18_02.accdb の中の M1000_作成T1040日付退院者数入院者数_退院率 マクロを再度確認しましょう。

【連載】#31 Access VBA を使い テーブルをExcelブックにエクスポートしよう


このマクロの中の赤で囲った 保存済みのインポート/エクスポート操作の実行 アクション
エクスポート-T1040_日付退院者数入院者数_退院率
という操作を実行しています。

この操作は実施どのように定義されているかを確認するためにリボンメニューから

外部データ > 保存済みのエクスポート操作

を順にクリックして表示される データタスクの管理 画面の中で

【連載】#31 Access VBA を使い テーブルをExcelブックにエクスポートしよう
18_02.accdb
T0000_東京都コロナ発症状況_マスタ テーブルに対するリンクテーブルマネージャ画面

T1040_日付退院者数入院者数_退院率 テーブルのエクスポート先を

C:\Users\devel\Documents\Desktop\T1040_日付退院者数入院者数_退院率.xlsx

という絶対パス定義で指定しています。

この定義は 記事#14

【連載】#14 Access のテーブルを Excelブックにエクスポートする方法を説明します

の中で紹介した リボンメニューの外部データから Excel を選択し出力を絶対パス名で指定してエクスポートし、このエクスポート操作を保存してマクロ内のアクションで指定しているわけですが、このやり方だとこういったツールを社内のグループ内で横展開しようと思った場合に、展開するユーザーごとにこのエクスポート操作を行いエクスポート操作を保存する必要があるため、ツールの横展開の障壁の1つになる可能性があります。

従って展開する相手のPCに

【Windows業務効率化】バッチファイルでツールのフォルダ環境を自動生成しよう

で紹介したバッチツールで標準的なツール用のフォルダ環境を作成してもらい、続いてこのエクスポート先のブック名を VBA を利用したマクロの中で各ユーザーのPCの %USERPROFILE% からの相対パス名で指定することでこの障壁をなくそうという訳です。

この %USERPROFILE% については必要に応じて

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

も参照して下さいね。

関数ライブラリ ExportTableToBook の組み込み方

このしらかば堂の Access VBA 関数ライブラリ ExportTableToBookを Access  に組み込む際は 

リボンメニューの

データベースツール > Visual Basic

を順にクリックして VBE(Visual Basic Editor) を起動し

【連載】#31 Access VBA を使い テーブルをExcelブックにエクスポートしよう

VBE のメニューから
挿入(I) > 標準モジュール(M)

を順にクリックして標準モジュールを挿入し

【連載】#31 Access VBA を使い テーブルをExcelブックにエクスポートしよう

現れたコードウインドウに

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

から VBAコードをコピーし、VBEのコードウインドウにペーストし、さらにオブジェクトの参照設定で以下のような EnjoyTech 等の参照設定を行ってVBEを閉じ

【連載】#31 Access VBA を使い テーブルをExcelブックにエクスポートしよう
VBA の参照設定

次に紹介する M1010_Call_ExportTableToBook マクロからこの関数を呼び出することでこのExportTableToBook関数を組み込みます。

M1010_Call_ExportTableToBook マクロ の作り方

では実際にこの ExportTableToBook関数を呼び出すための M1010_Call_ExportTableToBook マクロを作成しましょう。

【連載】#31 Access VBA を使い テーブルをExcelブックにエクスポートしよう
変更前 18_02.accdb の autoexec マクロ

ここではマクロビルダを使って 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 マクロを以下のようにします。

【連載】#31 Access VBA を使い テーブルをExcelブックにエクスポートしよう
変更後の 18_02.accdb 改め 作成_T1040_日付_退院者数_入院者数_退院率_xlsx.accdb の autoexec マクロ

まとめ

いかがでしたか?

本記事では テーブルの Excel ブックへのエクスポート方式を 記事#14 で紹介した リボンメニューの外部データから Excel を選択し出力を絶対パス名で指定してエクスポートし、このエクスポート操作を保存してマクロ内のアクションで指定する方式 から しらかば堂の Access VBA 関数ライブラリ ExportTableToBook  を利用して マクロの中で対象テーブルと出力 Excel ブック名を相対パス名で指定する方式 で実現する方法を紹介しました。

次の記事では 記事#24

【連載】#24 Access VBA の関数ライブラリを使いExcel のブック間で 指定セル領域をコピーしよう

で紹介した Access VBA を使ったExcel のブック間処理を行っている 23_01.accdb  に対するリファクタリング(改善)の内容について具体的に紹介します。

さてこの記事全体の目標は

  •  今の状況から抜け出してもっと前向きな仕事に取り組みたい
  • さっさと仕事を切り上げて充実したアフターファイブを過ごしたい

でしたよね。

あなたの解決したい問題は何ですか?
次回はまた

【連載】#32 Access VBA を使った Excel ブック間コピー処理をリファクタリングする

で Access VBA の新しい窓を開きましょう。


Microsoft Access 関連教材は次のリンクからどうぞ。

Access VBA 関連教材の紹介