【連載】#28 Access VBA の関数ライブラリを使いCSVファイルをインポートしよう

【連載】#28 Access VBA の関数ライブラリを使いCSVファイルをインポートしよう

 

【連載】#27 Access VBA の関数ライブラリを使いネットワークからCSVファイルをダウンロードしよう

本記事では 記事#25 でご紹介したリファクタリング方針に基づき

  • マクロ名の変更方法
  • マクロ内の不要アクションの削除方法
  • CSV ファイルのインポート方法を登録済の手動インポート操作のアクションによる起動方式からしらかば堂の Access VBA 関数ライブラリ ImportCsvFile    を利用した手順に変更する方法


について動画を使って紹介します

【連載】#28 Access VBA の関数ライブラリを使いCSVファイルをインポートしよう
しらかば堂

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

Access VBA の関数ライブラリを使いCSVファイルをインポートしよう

さて 記事#25

【連載】#25 バッチファイル や Access ツールをリファクタリングしよう

では ここまでに作成してきたバッチファイル、 Access ツールの課題を抽出し、リファクタリングしていく考え方をご紹介しました。

そこで 本記事の対象となる Access ツール 16_01.accdb のリファクタリング項目のみに注目して 記事#25 中のリファクタリング項目を集めると以下のようになっています。

項番 解決したい課題 リファクタリングの方針
4 デスクトップの整理とツールの名称変更

16_01.accdb
%USERPROFILE%\Tools\accdb\作成_T0000_東京都コロナ発症状況_マスタ.accdb
(本記事内では記事の都合上ツールの名称変更のみ行います)

8 不要な警告ダイアログの抑制 未使用につき
16_01.accdb から T0000_東京都コロナ発症状況_マスタ.xlsx エキスポート処理、および関連ダイアログを削除します。
11 ツールからの絶対パス情報を相対パス情報に変更 16_01.accdb
ダウンロードフォルダからの
130001_tokyo_covid19_patients.csv インポート処理を
しらかば堂のユーザー定義関数(VBA) ImportCSVFileによる相対パス指定に変更します。
15

日付(400日分)、日付毎の入院者数抽出機能の移動

16_01.accdb の
T0000_東京都コロナ発症状況_マスタ テーブル
に日付(400日分)、日付毎の入院者数抽出機能を移動します。

 

本記事では項番4、8、11に記載されたリファクタリング方針の実現方法について順にご紹介していきます。

 

リファクタリング方法

この具体的な方法は動画を見たほうがわかり易いので、まず次の動画を何回かご覧ください。

画面をフルスクリーンにしたり、再生スピードを変更して何回か見て頂くことをお勧めします。

補足説明

ここでは動画内で削除されたアクション、入れ替えしたアクションの位置づけについて少しだけ補足しておきます。

まずリファクタリング前の autoexe マクロですが

このマクロは以下のように M0000_作成_東京都コロナ発症状況_マスタ マクロを起動したあと Access を終了 するようになっていました。

【連載】#28 Access VBA の関数ライブラリを使いCSVファイルをインポートしよう
変更前 autoexec マクロ

 

そしてその M0000_作成_東京都コロナ発症状況_マスタ マクロは以下のようになっていました。

【連載】#28 Access VBA の関数ライブラリを使いCSVファイルをインポートしよう
変更前 M0000_作成_東京都コロナ発症状況_マスタ マクロ

つまりこのマクロの先頭部分で 記事#15 で手動作成した「個人のPCフォルダ名が直接記述される」以下の保存済みのインポート操作を呼び出しており

またこのマクロの後半部分では 記事#14 で手動作成した「個人のPCフォルダ名が直接記述される」保存済みのエクスポート操作、およびその関連メッセージボックスが記述されていたわけです。

今回これらの「個人のPCフォルダ名が直接記述される」部分をツールから排除するというリファクタリングの方針に基づき、これらを削除したわけです。

 

【連載】#28 Access VBA の関数ライブラリを使いCSVファイルをインポートしよう

 

 

一方変更後の autoexec マクロでは 後述の しらかば堂のオリジナルVBA関数  ImportCsvFile を起動する M0010_Call_ImportCsvFile マクロを起動してこれを実施するように変更してました。

【連載】#28 Access VBA の関数ライブラリを使いCSVファイルをインポートしよう
変更後 autoexec マクロ

ImportCsvFile の組み込み方法

VBA 実装部分

この関数を Access  に組み込む際は 

リボンメニューの

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

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

【連載】#28 Access VBA の関数ライブラリを使いCSVファイルをインポートしよう

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

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

【連載】#28 Access VBA の関数ライブラリを使いCSVファイルをインポートしよう

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

【Access VBA】指定 CSV ファイルを指定テーブルにインポートする

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

M0010_Call_ImportCsvFile マクロとして保存することでこの

ImportCsvFile 関数を組み込んでいます。

 

マクロ 実装部分

そしてこのM0010_Call_ImportCsvFile マクロを呼び出すための autoexec マクロをマクロビルダ画面を使って

【連載】#28 Access VBA の関数ライブラリを使いCSVファイルをインポートしよう

 

つまり次のように記述し呼び出しています。


ImportCsvFile("Downloads\130001_tokyo_covid19_patients.csv","130001_tokyo_covid19_patients",True,True)>0
If文の最後

Accessの終了

このこのM0010_Call_ImportCsvFile マクロが  ImportCsvFile    を呼び出すためのパラメータは以下のようになっています。

パラメータ番号 記述されたパラメータ値 説明
1 “https://stopcovid19.metro.tokyo.lg.jp/
data/130001_tokyo_covid19_patients.csv”

インターネット上からダウンロードしたいCSVファイルのURLを指定しています。

 

まとめ

いかがでしたか?

本記事では 記事#25 でご紹介したリファクタリング方針に基づき

  • マクロ名の変更方法
  • マクロ内の不要アクションの削除方法
  • CSV ファイルのインポート方法を登録済の手動インポート操作のアクションによる起動方式からしらかば堂の Access VBA 関数ライブラリ ImportCsvFile    を利用した手順に変更する方法

について動画を使いながら紹介しました。

 

次の記事では 16_01.accdb  に対する残りのリファクタリング項目の方法について具体的に紹介します。

項番 解決したい課題 リファクタリングの方針
15

日付(400日分)、日付毎の入院者数抽出機能の移動

16_01.accdb の
T0000_東京都コロナ発症状況_マスタ テーブル
に日付(400日分)、日付毎の入院者数抽出機能を移動します。

       

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

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

      でしたよね。

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

      【連載】#29 他のAccess ファイルからクエリ操作をインポートし再利用しよう

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


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

      Access VBA 関連教材の紹介