このブログは未経験からのエンジニア転職やプログラミングの勉強方法などを発信する、現役エンジニアによるエンジニアのためのトータル技術ブログです。ブログとご一緒にSNSのフォローもよろしくお願いします。

Twitterをフォローする

【Excel/VBA】連想配列×ファイルシステムオブジェクトで複数ファイルを自由に操作する方法

つぶやき
スポンサーリンク

こんにちは!あっきー (IwswAkht) です!

Excel の VBA を使う機会がありましたので今日は忘備録もかねて作ったサンプル公開しようと思います。

VBAは環境構築の必要がなくExcelがPCに入ってさえすればすぐにでも始められる言語です。
なのでプログラミングに興味がある人がお試しでやってみるのにはちょうどいい言語なのではないかと思ってます。

僕も初めてプログラミングをしてみたときは VBA をやりました。(挫折してそれ以降やってませんでしたがw)

それに少なくとも、日本で働いていれば Excel を使う頻度は極めて高いと思います。
エンジニアでない人でも VBA を覚えて日々の記録作業などを自動化したら社内で魔法使い扱いされるかもです。

タイトルでは連想配列とファイルシステムオブジェクトについてと書いてますが、サンプルとしてその他にもよく使いそうな機能を幅広く網羅したつもりですのでご参考にしてください。

 

スポンサーリンク

はじめに

 

動画で行っている手作業を VBA で自動化します。

 

 

概要:社員データを参照し別ファイルに所属部署ごとに社員データをまとめる

よくありそうな退屈なコピペ作業をシチュエーションにしてみました。

※画面切り替えなどしないためにシートをまとめてますが、実際はブックが分かれてます。

今回で主に以下の項目が学習できます。

 

1.別ブックを参照し値を書き込む
→ExecuteExcel4Macro
2.ファイルチェックなどのバリデーション
→Dir
3.連想配列を使用したパラメータの扱い
→Dictionary
4.ファイル操作
→ファイルシステムオブジェクト
5.引数を別のプロシージャへ渡す
→Call
6.複数の戻り値を配列で返す
→Function
7.その他、基本メソッドやセルの操作
→IF, For, For Each, etc...

 

設定ファイル読込→ファイル操作

 

ネットで「ブックを開く」や「ファイル名の取得」などで調べると大体以下のようなコードが出るかと思います。

 

 

このような場合フォルダ構成が変わったり、ファイル名が変わった場合などその都度コードを編集しないといけませんよね。

自分が使うだけなら別にいいですが、VBA に馴染みのない人でしたらコードからパスを変えるだけでも大変なのではないかと思います。

なので、以下の画像のように設定ファイルを用意してそのファイルを編集する作りの方が汎用性は高いでしょう。

 

・C:\Users\{username}\excel_sample\AppConfig.xlsx

 

連想配列

 

VBA の連想配列は Dictionaryオブジェクト で使用可能です。

配列はインデックスに対して値が格納されるの対し、連想配列は KeyItem をセットで使用します。

画像では「ParamName」列に書いた値が Key になり「value」列に書いた値が Item になります。

使うときはオブジェクト変数を定義し(dic という名前で仮定)、dic("Key")と記述することで Key に紐づいた Item を使うことができます。

 

こうすることでフォルダパス、ファイル名はもちろん、シート名やその他の運用の中で変わりそうな値は全部設定ファイルに記入しておけば管理はぐっと楽になりますよね。

実際のコードはいかになります。

 

・Common モジュール

 

・Module1

 

「sampleMacro.xlsm」のマクロ実行ボタンを押して読込を行うと以下の画像のように設定ファイルに記載した情報が書き込まれます。

 

 

 

 

ファイルシステムオブジェクト

 

連想配列に設定を格納したらファイルシステムオブジェクトでサンプルのファイルを開いてみましょう。

 

コードは以下になります。

 

・module1

 

CreateObject("Scripting.FileSystemObject") でファイルシステムオブジェクトを使えます。

あとは連想配列から必要な Key を呼び出し、対象ファイルが開かれることが確認できます。

こんな感じでファイルが開かれたことが確認できます。

 

あとは実際に動画で行っている作業のコードを書いていけばオッケーです。

長くなるので説明は割愛しますが、ファイル一式下記のリンクからダウンロードできますので実際に動かしたり、いじったりしながら確認してください。

 

↓ファイルをダウンロード↓

excel_sample

 

さいごに

 

最後まで読んでいただきありがとうございます。

今回で VBA は慣れれば便利だなって思ったのでエンジニアだけでなく事務の人とかも使えるようになったら業務がすごいはかどるようになると思います。

基本リテラシーとして持っといて悪くないスキルだと思いますのでぜひ実践してみていただけたらと思います!

この記事を気に入っていただけましたらTwitterdでもプログラミングに関してのツイートをリアルタイムでしていますので
ご一緒にフォローもお願いします。

 

スポンサーリンク
あっきー

元キャバクラ店長から未経験でエンジニアに転職した異端児。

自分の経験を元に、エンジニア転職や未経験からでも挫折しないプログラミングの勉強方法の発信をしてます。

あっきーをフォローする
つぶやき
\良い記事だったらシェアしてね!/
スポンサーリンク
駆け出しエンジニアのつぶやき