主にマクロマンとパワークエリの解説を行うサイトです

【マクロマン×Excel】”複数の”エクセルファイルを自動で開いて更新し、保存して閉じる

あなた
大量のExcelのデータ更新する作業ダルい~

 

 

RPAツールを用いて”複数の“Excelのデータ更新作業を自動化する方法を解説します。

 

 使用するRPAツール:マクロマン

 設定にかかる時間:30~60分程度

 この記事を読んで省力化できる作業:Excelで日常的に行っている複数のデータ更新作業

 

なお、1つのExcelファイルを自動更新する方法はこちらの記事にまとめてますので、単純なものから練習したい方はこちらを参考にしてください。

【マクロマン×Excel】エクセルファイルを自動で開いて更新し、保存して閉じる

 

解説

まず、準備するExcelファイルはこちらです。

① 更新したいExcelファイル(何個でも可。今回は3つのExcelファイルを更新します。)

② ①のExcelファイルをリスト化したExcelファイル(※今回はこのファイルをリストファイルと呼ぶことにします。)

 

 

続いて、作成するシナリオを洗い出します。

① リストファイルを立ち上げる。

② リストファイルの中の更新するExcelファイルの数を読み取る。

ーーーーーーーーーーーーーーーーーーーーーーーーーーー

③ データ更新するExcelファイル名をリストファイルから読み取り、そのExcelファイルを立ち上げる。

④ Excelファイルで目的とするシートを選択する。

⑤ データの更新を押す。

⑥ ブックを保存して閉じる。

ーーーーーーーーーーーーーーーーーーーーーーーーーーー

⑦ ②で読み取ったファイルの数だけ③~⑥の動作を繰り返す。

 

少し長いですが、③~⑥は1つのExcelを更新する方法とほとんど同じなので、難しく考える必要はありません。

 

図にまとめると以下のようになります。

 

マクロマン解説

 

まず、シナリオの全体感です。

 

全部で14行です。

データ更新するExcelファイルは今回3つとしていますが、このスクリプトで何個でも対応可能です。

 

それでは、順番に解説していきます。


① リストファイルを立ち上げる(スクリプトの1~3行目)

インスタンス名は「List」、ファイル名は「リストファイル.xlsx」、アクティブにするシートは「更新用」にしています。

それぞれの名称は何でもよいですので、自分の作成したExcelファイルに合わせてください。

 


② リストファイルの中の更新するExcelファイルの数を読み取る(スクリプトの4~5行目)

まず、今回次のように変数を宣言しておきます。

list_name:リストファイルに入力されているExcelファイル名を格納する変数

list現在行:リストファイルに入力されている行番号

list最終行:リストファイルに入力されている最終行番号

 

変数の追加は以下の画面から行います。

 

 

今回は繰り返し処理を行うため、変数を追加しました。

繰り返し処理の考え方については後ほど説明します。

 

次に、リストファイル内の更新するExcelファイルの数を読み取るために、以下のように設定します。

list現在行:2

list最終行:リストファイルのA列の最終行番号

これで、リストファイルのセル番地A2からA最終行(今回はA4)までのセルを読み取り範囲に設定することができます。

 


③ データ更新するExcelファイル名をリストファイルから読み取り、そのExcelファイルを立ち上げる(スクリプトの7~9行目)

データ更新するExcelファイルのインスタンス名は「更新Excel」としました。

リストファイルのインスタンス名とデータ更新するExcelファイルのインスタンス名は、別のものにしなければならないので注意してください。

 

このスクリプトで、リストファイルのセル番地:A{list現在行}に記入されたファイル名を、list_nameに格納し、list_nameと同じ名称のブックを開くという作業を記憶させることができました。

 


④~⑥はこちらの記事と同じであるため割愛します(スクリプトの10~12行目)

 


⑦ ②で読み取ったファイルの数だけ③~⑥の動作を繰り返す(スクリプトの6, 13, 14行目)

考え方としては、

A{list現在行}に入力されたセルを読み取り、そのExcelファイルを開いてデータ更新

{list現在行}に1を足し算する

の繰り返しを行います。

{list現在行}は{list最終行}以下の数字であるため、{list現在行}が{list最終行}を超えると、繰り返し処理をストップするように設定します。

 


以上でシナリオの完成です。

 

最初はちょっとしたミスでうまく動作しなかったり、エラーになったりするかと思います。

私もいまだに一発でうまく動作することなんてありません。試行錯誤を重ねながら作成することばかりです。

 

今回の記事がお役に立てれば幸いです。

もし「ここの説明がもう少し欲しい」とか「こういう作業も自動化できないか」とかがありましたら、なるべく対応させていただきますので、コメント欄にご記載ください!