ノン・プログラマー、仕事のためのマクロ・VBA(7) ファイル名取得VBAは、業務引き継ぎに便利

ノン・プログラマー、仕事のためのマクロ・VBA(7) ファイル名取得VBAは、業務引き継ぎに便利

ノン・プログラマー、仕事のためのマクロ・VBA(7)

ファイル名取得VBAは、業務引き継ぎに便利

囚人のジレンマ」というゲーム理論をご存じですか?

組織(会社)の全体最適と、個人(自部門)の利益が相反することが多々あり、どちらの選択肢を取るべきか、判断に苦しむ場面のことをさします。転勤や転職、新入社員を受け入れたりする場合に、「ていねいな引き継ぎ資料を作るかどうか」ということも、じつはこの「囚人のジレンマ」理論で説明できます。

つまり、会社のことを考えれば「モレない引き継ぎが必要」と分かっているものの、そのことで異動・転職前後、ただでさえあわただしい自分の時間が、さらにくわれてしまうことになります。引き継ぎ資料の作成は、できれば簡単にすませてしまいたい!、という本音をお持ちの方も多いのではないでしょうか?

そこで今回は、最低限の申し送りを効率的に行うために、VBAで簡単にできる「引き継ぎファイルの見える化」について解説します。

Excel VBAでファイル名を取得すると、必要書類の見える化ができます

たとえば、同僚などに自分の仕事を引き継ぐことになった場合、まずは受け渡しする業務書類ファイルを、「引き継ぎフォルダ」などにまとめます。

ノン・プログラマー、仕事のためのマクロ・VBA(7) ファイル名取得VBAは、業務引き継ぎに便利

たとえば、この“hikitsugi”フォルダの中には、

  • A社見積請求書.xlsx
  • アルバイトシフト表.xlsx
  • 社内りん議テンプレート.xlsx
  • 小口経費精算.xlsx

という4つのファイルが含まれているとします。

同じフォルダ内に含まれているファイル名を抜き出して、Excelシートに一覧化するマクロ有効ブック”list.xlsm”を別に用意し、VBEで、下記のようなVBAプログラムを記述します。

(引き継ぎ前提なので、プログラムの説明コメントも、できるかぎり第三者に分かりやすいように、こまかく書き込みましょう。)

Sub ファイル名取得マクロ()

    Dim buf As String
    Dim cnt As Long
    
     'buf:バッファ(データの一時的な置き場)
     'list.xlsmに書き出す「ファイル名」を一時的に格納しておく変数

     'Cnt:Do While ループを1回ずつ繰り返すためのカウンター変数

        Const folderpath As String = "C¥(フォルダを作成した場所(フルパス))¥hikitsugi¥"
         'Const folderpath: 特定のフォルダパスを指定する定数宣言
        
        buf = Dir(folderpath & "*.xlsx")
        'Dir関数:指定する場所に、ファイルが存在するかどうかを判定する関数
        '引数に指定したファイルが存在すると、Dir関数はそのファイル名を返します。
        'Dir関数にワイルドカード(*)を指定してループをかけると、
        'ループ2回目以降は、前回にDir関数が返したファイルを除外して検索します。
        '条件に一致するすべてのファイルを返した後、Dir関数は空欄(“”)を返します。
        
        Do While buf <> ""
        'Do Whileループで、指定するフォルダ内の該当ファイルを繰り返し検索し、
        '検索結果が空白(“”)になるまで、
        'そのファイル名をlist.xlsmのシートに1行ずつ転記していきます。
            
            cnt = cnt + 1
            Cells(cnt, 1) = buf
            buf = Dir()

        Loop

End Sub

このVBAを実行すると、list.xlsmには、次のようなリストが生成されます。

ノン・プログラマー、仕事のためのマクロ・VBA(7) ファイル名取得VBAは、業務引き継ぎに便利

このシートへ、ふきだしコメントを足すなり、行や列を挿入して申し送り事項をメモしておけば、それだけで立派な引き継ぎ資料となるわけです。

ノン・プログラマー、仕事のためのマクロ・VBA(7) ファイル名取得VBAは、業務引き継ぎに便利

Thisworkbookプロパティを使うときは、フォルダ作成場所に注意

ちなみに、先のプログラムでは、

Const folderpath As String = "C¥(フォルダを作成した場所(フルパス))¥hikitsugi¥"

で、引き継ぎ用フォルダを作成した場所(フルパス)を指定しました。カンのよい方でしたら、「引き継ぎ資料」とlist.xlsmを同一フォルダに入れておけば、「Thisworkbookプロパティ」が使えるんじゃないか?と思うかもしれません。その通りです。

ただし、Windows10以降では、「ドキュメント」や「デスクトップ」フォルダなどの書類/データを、自動的にクラウドサービスOneDriveに同期することが標準設定となっており、このクラウド同期設定を解除しない場合、Thisworkbookプロパティは機能しません。参照すべきファイル格納場所へのパスが、ローカルPCのフルパスではなく、https://d.docs.live.net/ からはじまるクラウド上のWebパスとなっており、Thisworkbookプロパティでは、これに対応することができないからです。

※厳密に言えば、VBAでWebパスをローカルのフルパスに置きかえる構文を作ることも可能ですが、複雑になりますので、この記事ではその説明は省かせていただきます。

このマクロを使ってファイル名一覧を作成する場合には、ご自身のローカルPCに引き継ぎフォルダを置いて、必要書類がすべて一覧化できてから、そのフォルダごと引き継ぎ相手に渡すようにしましょう。

まとめ:ファイル名一覧をVBAで作れば、引き継ぎ書作成がラクになります

フォルダ内のファイル一覧を作っておくことの便利さについて、イメージできましたでしょうか?

もちろん「未来の自分」「過去の自分」も、”記憶ちがい”という意味では赤の他人なので、未来や過去のために自分用引き継ぎ書類を作っておく必要もあるかもしれません。

ファイル検索について、Windowsには「エクスプローラー」という専用ソフトウエアがありますが、このソフトは動作がとにかく重いことでも有名です。「あのファイル、どこにやったかな〜」とエクスプローラーを起動して、モニター前で、仕事が5分も10分もフリーズしてしまった経験はありませんか?

その点、将来使いそうなファイルを特定フォルダにまとめ、その中のファイル一覧をつねに「ファイル名取得マクロ」で見える化しておけば、いつ部署異動の辞令が出てもこわくありません!  って、ワタシ、異動ですか? そりゃ別の意味でこわいです。

はい、新天地でも頑張ります!!

小さなお悩みでも、
お気軽にご相談ください!

お急ぎの方はお電話にてお問い合わせください

050-6867-2130
せるワザロゴ

セルワザでは、役に立つEXCELワザをご紹介しております!