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

【連載】#32 Access VBA を使った Excel ブック間コピー処理をリファクタリングする
【連載】#31 Access VBA を使い テーブルをExcelブックにエクスポートしよう
【連載】#32 Access VBA を使った Excel ブック間コピー処理をリファクタリングする
しらかば堂

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

本記事では 記事#24 で紹介したAccessによる  Excel ブック間でのデータコピーツール 23_01.accdb をリファクタリング(改善)し、この中でしらかば堂のライブラリ ExportInputBookToOutputBook を3回呼び出し、東京都コロナウイルスに関連した3組のグラフ描写用入力データ用Excelブック

      この記事ではこのリファクタリング項目のうち内容が自明な項番2、項番6を除き、項番10、項番14について簡単に紹介します。

      修正前Autoexec マクロの内容

      まず以下はリファクタリング(改善)前の 23_01.accdb  内で定義されていた autoexec マクロです。

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

      
      If ExportInputBookToOutputBook("Documents\Desktop\T1040_日付_退院者数_入院者数_退院率.xlsx","T1040_日付_退院者数_入院者数_退院率","$A$1:$D$401","Documents\Desktop\T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx","T1040_日付_退院者数_入院者数_退院率","$A$1:$D$401")>0
      If文の最後
      

      のように ExportInputBookToOutputBook  を使って下記グラフ

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

      の描画用データのコピーを目的として前処理で作成された
      Documents\Desktop\T1040_日付_退院者数_入院者数_退院率.xlsx
      T1040_日付_退院者数_入院者数_退院率 シートの セル $A$1:$D$401  範囲を
      Documents\Desktop\T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx

      の同名のシートの同範囲にコピーしています。

      修正後Autoexec マクロの内容

      これに対し以下は項番14実施後23_01.accdb 改め

      %USERPROFILE%\Tools\accdb\更新_東京都コロナ感染者分析グラフ_xlsx.accdb

      内の autoexec マクロの内容です。

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

      不要メッセージボックスを削除する

      まずリファクタリング(改善)前の 23_01.accdb  の中の autoexec マクロ内で赤線で囲まれた部分は処理の終了を利用者に伝えるためのメッセージボックスですが、項番10を実現するためこれを削除しています。

      東京都コロナウイルス入院者数と退院者数比率推移グラフ描画用データのコピー元とコピー先のフォルダ修正

      次にまず最初のアクション

      
      If ExportInputBookToOutputBook("Tools_Data_Temp\xlsx\T1040_日付_退院者数_入院者数_退院率.xlsx","T1040_日付_退院者数_入院者数_退院率","$A$1:$D$401","Tools_Data_Temp\xlsx\T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx","T1040_日付_退院者数_入院者数_退院率","$A$1:$D$401")>0
      If文の最後

      の中で先ほどと同様に以下のグラフ

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

      の描画用データのコピーを目的として前処理で作成された
      Tools_Data_Temp\xlsx\T1040_日付_退院者数_入院者数_退院率.xlsx
      T1040_日付_退院者数_入院者数_退院率 シートの セル $A$1:$D$401  の範囲を
      Tools_Data_Temp\xlsx\T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx

      の同名のシート範囲にコピーしています。

      つまりここでは 23_01.accdb の中でデスクトップにおいていた描画用データファイルと、グラフ描画用のテンプレートファイルの保存フォルダを

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

      で定義されているように %USERPROFILE% からの相対パスで Documents\Desktop (つまりデスクトップ)から  Tools_Data_Temp へ変更している訳です。

      東京都コロナウイルス男女別入院者数推移グラフ描画用データのコピー処理追加

      続いて2番目のアクション

      
      If ExportInputBookToOutputBook("Tools_Data_Temp\xlsx\T2040_日付_女性入院者数_男性入院者数.xlsx","T2040_日付_女性入院者数_男性入院者数","$A$1:$C$401","Tools_Data_Temp\xlsx\T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx","T2040_日付_女性入院者数_男性入院者数","$A$1:$C$401")>0
      If文の最後

      では

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

      の描画用に以降の記事で紹介予定のツール

      作成_T2040_日付_女性入院者数_男性入院者数_xlsx.accdb

      を使って作成される

      Tools_Data_Temp\xlsx\T2040_日付_女性入院者数_男性入院者数.xlsx
      T2040_日付_女性入院者数_男性入院者数 シートの セル $$A$1:$C$401 範囲を
      Tools_Data_Temp\xlsx\T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx
      の同名のシート範囲にコピーしています。

      東京都コロナウイルス世代別入院者数推移グラフ描画用データのコピー処理追加

      最後に3番目のアクション

      
      If ExportInputBookToOutputBook("Tools_Data_Temp\xlsx\T3200_日付_年代別入院者数.xlsx","T3200_日付_年代別入院者数","$A$1:$L$401","Tools_Data_Temp\xlsx\T3200_日付_年代別入院者数_グラフ.xlsx","T3200_日付_年代別入院者数","$A$1:$L$401")>0
      If文の最後
      

      まとめ

      いかがでしたか?

      本記事では 記事#24 で紹介したAccessによる  Excel ブック間でのデータコピーツール 23_01.accdb をリファクタリング(改善)し、東京都コロナウイルスに関連した3組のグラフ描写用入力データ用Excelブックグラフ描画用のテンプレートとして準備したExcelブックにデータコピーするツール 更新_東京都コロナ感染者分析グラフ_xlsx.accdb に機能追加する様子について紹介しました。

       さて次の記事は少し趣向を変えてバッチファイル から Cygwin の bash を実行し
      東京都_新型コロナウイルス陽性患者発表詳細 に関連した 2つのCSVファイル を結合する方法を紹介します。

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

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

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

          【連載】#33 バッチファイルから Cygwin の bash を実行し 4つのCSVファイルを結合する

          新しい窓を開きましょう。


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