【連載】#26 リファクタリング後のフォルダ構成とバッチファイル を確認しよう

【連載】#26 リファクタリング後のフォルダ構成とバッチファイル を確認しよう
【連載】#25 バッチファイル や Access ツールをリファクタリングしよう
【連載】#26 リファクタリング後のフォルダ構成とバッチファイル を確認しよう
しらかば堂

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

 

リファクタリング後のフォルダ構成とバッチファイル を確認しよう


本記事では東京都コロナウイルス発症者に関連した3種類の発症者推移グラフ を作成することを目的として 記事#25で実施したリファクタリングへの理解をさらに深めるために、これらのツール開発環境のフォルダ構成、バッチファイルの内容について簡単に紹介します。

    フォルダ構成の詳細

    このリファクタリングの前提として

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

    の中で紹介されているバッチファイルを適用し、作成されたツールのフォルダ構成は以下のようになっています。

    %USERPROFILE%

    %USERPROFILE% 配下には以下のようにツール開発に必要なツールそのもの(Tools)、ツールに関連したログ(Tools_Data_Logs)、テンプレート等の静的データ(Tools_Data_Static)、ツールの実行の都度テンポラリ情報として内容の書き換えが行われる動的データ(Tools_Data_Temp)を格納するフォルダ類が配置されます。

    【連載】#26 リファクタリング後のフォルダ構成とバッチファイル を確認しよう
    %USERPROFILE% 配下のフォルダ構成

    %USERPROFILE%\Tools

    %USERPROFILE%\Tools 配下には業務開発を目的としてユーザーが作成した Access ツール(accdb)、バッチファイル(bat) 等が保存されるフォルダが配置されます。

    【連載】#26 リファクタリング後のフォルダ構成とバッチファイル を確認しよう
    %USERPROFILE%\Tools 配下のフォルダ構成

    %USERPROFILE%\Tools\accdb

    %USERPROFILE%\Tools\accdb 配下には各種 Access ツール群が配置されます。

    【連載】#26 リファクタリング後のフォルダ構成とバッチファイル を確認しよう
    %USERPROFILE%\Tools\accdb 配下のファイル

    %USERPROFILE%\Tools\bat

    %USERPROFILE%\Tools\bat 配下には各種バッチファイル群が配置されます。

    【連載】#26 リファクタリング後のフォルダ構成とバッチファイル を確認しよう
    %USERPROFILE%\Tools\bat 配下のファイル

    MakeMyToolsEnvironment.bat はこのツール環境を作成するバッチファイル、MakeTodaysFolder.bat は 記事 【Windows業務効率化】バッチファイルを使って年月日名のフォルダを自動生成する で利用しているバッチファイルです。

    %USERPROFILE%\Tools_Data_Static\xlsx

    %USERPROFILE%\Tools_Data_Static\xlsx 配下には Excel で作成されたグラフ描画等の各種テンプレートファイル群が配置されます。これらのファイルは利用にあたり事前に
    %USERPROFILE%\Tools_Data_Temp\xlsx 配下にコピーして使用します。

    これは不慮のアクシデント等によりグラフ描画等のテンプレートファイルが破壊されツールが機能不全になることを防ぐためのバックアップと位置づけています。

    【連載】#26 リファクタリング後のフォルダ構成とバッチファイル を確認しよう
    %USERPROFILE%\Tools_Data_Static¥xlsx 配下のファイル

    %USERPROFILE%\Tools_Data_Temp¥xlsx

    %USERPROFILE%\Tools_Data_Temp\xlsx 配下には各種ツールが一時的に利用する各種 Excel シートを配置します。これらのフォルダ内のファイルは利用に先立ち事前に削除される前提で利用します。

    【連載】#26 リファクタリング後のフォルダ構成とバッチファイル を確認しよう
    %USERPROFILE%\Tools_Data_Temp\xlsx 配下のフォルダ構成

    yyyymmdd で代表されるフォルダは 記事 【Windows業務効率化】バッチファイルを使って年月日名のフォルダを自動生成する がタスクスケジューラ経由で起動されたことで生成されたフォルダです。

    バッチファイルの詳細

    作成_東京都コロナウイルス_発症者推移グラフ.bat の全体像を確認する

     記事#25  で紹介したリファクタリング後のバッチファイル 
    作成_東京都コロナウイルス_発症者推移グラフ.bat
    は以下のようなものでした。

    
    @echo off
    
    setlocal
    
    rem スリープタイマ値を設定する
    set wait_time=2
    
    echo 01.%USERPROFILE%\Downloadsに移動
    timeout /t %wait_time% > nul
    cd %USERPROFILE%\Downloads
    
    if exist 130001_tokyo_covid19_patients.csv (
      echo 02.旧 130001_tokyo_covid19_patients.csv ファイルを削除
      timeout /t %wait_time% > nul
      del 130001_tokyo_covid19_patients*.*
      del /Q %USERPROFILE%\Tools_Data_Temp\xlsx\*.*
    )
    
    echo 03.新 130001_tokyo_covid19_patients.csv ファイルをダウンロード
    timeout /t %wait_time% > nul
    cd %USERPROFILE%\Tools\accdb
    入手_130001_tokyo_covid19_patients_csv.accdb
    
    echo 04.%USERPROFILE%\Tools\accdbに移動
    timeout /t %wait_time% > nul
    cd %USERPROFILE%\Tools\accdb
    
    echo 05.130001_tokyo_covid19_patients.csv から T0000_東京都コロナ発症状況_マスタ を作成
    timeout /t %wait_time% > nul
    作成_T0000_東京都コロナ発症状況_マスタ.accdb
    
    echo 06.T0000_東京都コロナ発症状況_マスタ から T1040_日付_退院者数_入院者数_退院率.xlsx を作成
    timeout /t %wait_time% > nul
    作成_T1040_日付_退院者数_入院者数_退院率_xlsx.accdb
    
    echo 07.T0000_東京都コロナ発症状況_マスタ から T2040_日付_女性入院者数_男性入院者数.xlsx を作成
    timeout /t %wait_time% > nul
    作成_T2040_日付_女性入院者数_男性入院者数_xlsx.accdb
    
    echo 08.T0000_東京都コロナ発症状況_マスタ から T3200_日付_年代別入院者数.xlsx を作成
    timeout /t %wait_time% > nul
    作成_T3200_日付_年代別入院者数_xlsx.accdb
    
    echo 09.3つのグラフ描画用データをそれぞれのグラフ描画用テンプレートにコピー
    timeout /t %wait_time% > nul
    copy %USERPROFILE%\Tools_Data_Static\xlsx\*_グラフ.xlsx %USERPROFILE%\Tools_Data_Temp\xlsx
    
    更新_東京都コロナ感染者分析グラフ_xlsx.accdb
    
    echo 10.T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx を起動
    timeout /t %wait_time% > nul
    %USERPROFILE%\Tools_Data_Temp\xlsx\T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx
    
    echo 11.T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx を起動
    timeout /t %wait_time% > nul
    %USERPROFILE%\Tools_Data_Temp\xlsx\T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx
    
    echo 12.T3200_日付_年代別入院者数_グラフ.xlsx を起動
    timeout /t %wait_time% > nul
    %USERPROFILE%\Tools_Data_Temp\xlsx\T3200_日付_年代別入院者数_グラフ.xlsx
    
    endlocal
    
    pause
    explorer /e ./root,%USERPROFILE%\Tools_Data_Temp\xlsx
    

    このバッチファイルの中には 記事#23 同様

    • バッチファイルとして共通的に使用される基本テクニック部分
    • この処理のために個別に定義されている部分

    がありますが、この基本テクニック部分については

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

     

    で詳しく紹介してますので、こちらを参照してください。

    以降ではこのバッチファイルの目的にそった個別部分について紹介します。

     

    タイマー付メッセージを出力する

    このバッチファイルには

    
    rem スリープタイマ値を設定する
    set wait_time=2
    

    で変数 %wait_time%2 に設定(=待ち時間を2秒に設定)したうえで各パート毎に

    
    
    echo 01.ダウンロードフォルダに移動
    timeout /t %wait_time% > nul
    

    といった記述で 記事#23 同様

    • 動画で処理がどこまで実行されたかを確認しやすくする
    • バッチファイルの実行を適度に遅くして動画で確認しやすくする

    という目的で意識的に待ち時間を入れています。

     

    ダウンロードフォルダ配下を初期化する

    このバッチファイルの以下の部分

    
    
    cd %USERPROFILE%\Downloads
    if exist 130001_tokyo_covid19_patients.csv (
      echo 02.旧 130001_tokyo_covid19_patients.csv ファイルを削除
      timeout /t %wait_time% > nul
      del 130001_tokyo_covid19_patients*.*
      del /Q %USERPROFILE%\Tools_Data_Temp\xlsx\*.*
    )
    

    は 記事#23 同様このバッチファイルの実行フォルダをダウンロード フォルダ %USERPROFILE%\Downloads 配下に移動し

    以前ダウンロードした 130001_tokyo_covid19_patients.csv の有無をチェックし、もし残っていたらそれを削除するためのものです。

    またあわせて作業用フォルダ

    %USERPROFILE%\Tools_Data_Temp\xlsx

    をその使用用途に従い配下の全てのファイルを削除しています。

     

    CSV ファイルをダウンロードする

    このバッチファイルの次の部分

    
    
    echo 03.新 130001_tokyo_covid19_patients.csv ファイルをダウンロード
    timeout /t %wait_time% > nul
    cd %USERPROFILE%\Tools\accdb
    入手_130001_tokyo_covid19_patients_csv.accdb
    
    

    は %USERPROFILE%\Tools\accdb 配下の

    入手_130001_tokyo_covid19_patients_csv.accdb

     を起動し、東京都_新型コロナウイルス陽性患者発表詳細 のサイトから

    130001_tokyo_covid19_patients.csv を直接ユーザーの 

    %USERPROFILE%\Downlords フォルダ配下にダウンロードしています。

    この  入手_130001_tokyo_covid19_patients_csv.accdb の詳細については次の記事を参照ください。

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

    T0000_東京都コロナ発症状況_マスタ を作成する

    このバッチファイルの次の部分

    
    
    echo 04.%USERPROFILE%Tools\accdbに移動
    timeout /t %wait_time% > nul
    cd %USERPROFILE%\Tools\accdb
    
    echo 05.130001_tokyo_covid19_patients.csv から T0000_東京都コロナ発症状況_マスタ を作成
    timeout /t %wait_time% > nul
    作成_T0000_東京都コロナ発症状況_マスタ.accdb
    
    
    

    は %USERPROFILE%\Tools\accdb

    に移動後

    作成_T0000_東京都コロナ発症状況_マスタ.accdb

     を起動し、
    作成_T0000_東京都コロナ発症状況_マスタ.accdb 内に

    T0000_東京都コロナ発症状況_マスタ テーブルを作成します。

    この 作成_T0000_東京都コロナ発症状況_マスタ.accdb の詳細については次の記事を参照下さい。

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

     

    T1040_日付_退院者数_入院者数_退院率.xlsx を作成する

    このバッチファイルの次の部分

    
    
    echo 06.T0000_東京都コロナ発症状況_マスタ から T1040_日付_退院者数_入院者数_退院率.xlsx を作成
    timeout /t %wait_time% > nul
    作成_T1040_日付_退院者数_入院者数_退院率_xlsx.accdb
    
    
    
    
    

    は %USERPROFILE%\Tools\accdb 配下の 作成_T1040_日付_退院者数_入院者数_退院率_xlsx.accdb

     を起動し、作成_T0000_東京都コロナ発症状況_マスタ.accdb 内の東京都コロナ発症状況_マスタ テーブル

    を参照して

    %USERPROFILE%\Tools_Data_Temp\xlsx

    配下に T1040_日付_退院者数_入院者数_退院率.xlsx を作成します。

    この作成_T1040_日付_退院者数_入院者数_退院率_xlsx.accdbの詳細については次の記事を参照下さい。

    【連載】#30 Access VBA を使い 他の Access 内テーブルをリンクしよう

    T2040_日付_女性入院者数_男性入院者数.xlsx を作成する

    このバッチファイルの次の部分

    
    
    echo 07.T0000_東京都コロナ発症状況_マスタ から T2040_日付_女性入院者数_男性入院者数.xlsx を作成
    timeout /t %wait_time% > nul
    作成_T2040_日付_女性入院者数_男性入院者数_xlsx.accdb
    
    

    は %USERPROFILE%\Tools\accdb 配下の 作成_T2040_日付_女性入院者数_男性入院者数_xlsx.accdb

     を起動し、作成_T0000_東京都コロナ発症状況_マスタ.accdb 内の東京都コロナ発症状況_マスタ テーブル

    を参照して

    %USERPROFILE%\Tools_Data_Temp\xlsx

    配下に T2040_日付_女性入院者数_男性入院者数.xlsx を作成します。

    この 作成_T2040_日付_女性入院者数_男性入院者数_xlsx.accdb の詳細については次の記事を参照ください。

    【連載】#34 Access の結合クエリを使いグラフ描画用データを作ろう

    T3200_日付_年代別入院者数.xlsx を作成する

    このバッチファイルの次の部分

    
    
    echo 08.T0000_東京都コロナ発症状況_マスタ から T3200_日付_年代別入院者数.xlsx を作成
    timeout /t %wait_time% > nul
    作成_T3200_日付_年代別入院者数_xlsx.accdb
    
    

    は %USERPROFILE%\Tools\accdb 配下の 作成_T3200_日付_年代別入院者数_xlsx.accdb

     を起動し、作成_T0000_東京都コロナ発症状況_マスタ.accdb 内の東京都コロナ発症状況_マスタ テーブル

    を参照して

    %USERPROFILE%\Tools_Data_Temp\xlsx

    配下に T3200_日付_年代別入院者数.xlsx を作成します。

    この 作成_T3200_日付_年代別入院者数_xlsx.accdbの詳細については次の記事を参照ください。

    【連載】#35 VBA で SQL を操作しグラフ描画用データを作ろう

    グラフ描画用データをそれぞれのグラフ描画用テンプレートにコピーする

    このバッチファイルの次の部分

    
    
    echo 09.3つのグラフ描画用データをそれぞれのグラフ描画用テンプレートにコピー
    timeout /t %wait_time% > nul
    copy %USERPROFILE%\Tools_Data_Static\xlsx\*_グラフ.xlsx %USERPROFILE%Tools_Data_Temp\xlsx
    
    更新_東京都コロナ感染者分析グラフ_xlsx.accdb
    
    
    
    

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

     を起動し、

    %USERPROFILE%\Tools_Data_Temp\xlsx

    配下に作成された

    T1040_日付_退院者数_入院者数_退院率.xlsx
    T2040_日付_女性入院者数_男性入院者数.xlsx
    T3200_日付_年代別入院者数.xlsx

    のデータ領域をそれぞれ
    T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx
    T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx
    T3200_日付_年代別入院者数_グラフ.xlsx
    のデータ領域へコピーしています。

    この 更新_東京都コロナ感染者分析グラフ_xlsx.accdb の詳細については次の記事を参照ください。

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

    グラフを順番に描画する

    このバッチファイルの次の部分

    
    
    echo 10.T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx を起動
    timeout /t %wait_time% > nul
    %USERPROFILE%\Tools_Data_Temp\xlsx\T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx
    
    echo 11.T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx を起動
    timeout /t %wait_time% > nul
    %USERPROFILE%\Tools_Data_Temp\xlsx\T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx
    
    echo 12.T3200_日付_年代別入院者数_グラフ.xlsx を起動
    timeout /t %wait_time% > nul
    %USERPROFILE%\Tools_Data_Temp\xlsx\T3200_日付_年代別入院者数_グラフ.xlsx
    
    
    

    を起動し、

    %USERPROFILE%\Tools_Data_Temp\xlsx

    配下の
    T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx
    T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx
    T3200_日付_年代別入院者数_グラフ.xlsx
    を順に起動してグラフ描画および表示させています。

    作業用テンポラリフォルダ表示する

    このバッチファイルの次の部分

    
    
    explorer /e ./root,%USERPROFILE%\Tools_Data_Temp\xlsx

    では作成された Excel ブックヘ簡単にアクセスが可能なように Microsoft のエクスプローラで作業フォルダ

    %USERPROFILE%\Tools_Data_Temp\xlsx

    を開いています。

    まとめ

    本記事では記事#25で実施したリファクタリングの内容と新たなツール開発環境への理解を深めることを目的として

    • これらのツール開発環境のフォルダ構成
    • バッチファイルの内容

    についてご紹介しました。

    次回以降は本記事の中で紹介した変更内容について順に紹介していきます。

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

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

    でしたよね。

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

    次回はまた 

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

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


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

    Access VBA 関連教材の紹介