Excelマクロ入門。複数のマクロを連続で動かすには?

  • URLをコピーしました!

Excelマクロで複数の処理を一気に動かしたいこともあるでしょう。
その場合の対処方法をまとめてみました。

目次

Excelマクロで同じ処理を17回

ExcelシートにあるデータをCSVファイルにして保存するという処理は、Excelを利用していればそれなりに登場します。

ただ、F12をタッチして、ファイル形式にCSVを選択して保存するまでに、それなりに手数がかかります。
この処理をマクロを使うことで自動化できます。

必要なデータを入力しておき、データの入っている最終行を数えてその行までの範囲を指定してコピー、新規ファイルに貼り付けてCSVファイルを保存します。

今回の事例は、この処理をするシートが複数あったとき。
それぞれのシートでCSVファイルで保存するデータの範囲もバラバラです。

シートごとに別々のマクロを書いて1つずつ動かすのもめんどくさいですし、かといって、複数の同じ処理をまとめて1つにすると、あとで見たときにわかりにくくなります。1つのマクロは長すぎないほうがいいかなと。

であれば、マクロを別々に書いておき、必要に応じて連続して動かせるという状態にしておくのも手です。

このやり方をお伝えします。

Callでマクロを呼び出す

複数のマクロを連続して動かすにはどうするか?

その方法の1つはCallを使うこと。

それぞれのマクロを書き出すときには、「Sub 〇〇」とタイトルをつけるわけですが、この〇〇を「Call 〇〇」とすることで、別のモジュールにあるマクロを呼び出すことができるのです。

たとえば、このマクロだと「import_1」がタイトル。

これを並べるわけです。今回の事例ではシート数は17…。まぁ、こんなの手でやっていられません。

Callで並べることで、このマクロを動かすことで、別のところにあるマクロを呼びに行くわけです。上から順番に処理をしてきます。

動画にしてみました。

ざっと17秒ってところです。

ChatGPTにも聞いてみる

マクロを動かすときには、処理のプログラムを1つずつ動かして、「スタート→ゴール」×17よりも、1つのプログラムで違うポイントだけを置き換えるという書き方をするほうが早く終わります。

これ1つで完結が17個あるってことですから。

また、最初のほうで、

' 画面更新や自動計算を止める
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual

と、最後に

' 高速化を解除
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic

として、画面の動きが最低限になるようにしています。これはこれでかかる時間を減らせますが、これも17のマクロすべてに書いてあれば、動きは増えます。

より早くしたければ、ChatGPTとやりとりしてみるのもいいかと。
何ができるか?を知るには効率がいいですから。

で、やりとりして書いたマクロがこれです。(まぁ、書いてもらったのを理解できるようにちょっと手直ししたくらいです)

ということで、このパターンも動画にしてみました。ざっと12秒。さっきが17秒だったので、5秒差ですが、この5秒が大きかったりします。

ただ、ChatGPTに聞くにも「何をしたいか?」「マクロでどんなことができるか?」はある程度イメージできたほうがいいでしょうね。
わからないと、引っかかりもありませんから。

そのためにじぶんで手を動かして体感するのがやはりおすすめかと。


【編集後記】
昨日は税理士業、相続の打合せ。
夜はドンキーコングを長男(10)と一緒に。

一度クリアしていることもあって、
めちゃめちゃ上手です。
おすすめのやり方を
教えてもらったり。

FC25のほうは調子がよく
勝ちました。

【昨日の1日1新】
※「1日1新」→詳細はコチラ
Anker 3.5mm プレミアムオーディオケーブル
新セミナー告知


この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次