[Excel/VBA]ファイルが開いたことを検出する方法

この記事のザックリした内容
  • Excel VBAを知っている方が対象
  • xlsmファイルを使わないで実現方法を知りたい方向け
  • personal.xlsb を使います

 

こんにちは。ナガオカ(@boot_kt)です。

 

Excelを使う時、こんなことができたらいいのになぁ、なんて思うことありませんか?

  1. エクセルのファイルを開く
    ファイルの開き方は手動でもなんでもOK
    xlsファイルでも、xlsxファイルでも、xlsmファイルでも、なんでもOK
    WindowsならbatやPowerShell等、Mac/Linuxならshell等で自動化してもOK
     
  2. 一定枚数のファイルが開いたら、自動的になんらかの処理をしたい
     
  3. 処理が終わったらファイル閉じたい
     
  4. 番へ戻る
     

今回はこれを実現する方法を解説します。

 

 

 


 

 

まずはソースコード

ソースコードを見るほうが早いと思うので先に書きます。

VBAを分かる人であれば、これだけ見れば分かりますよね。

解説

解説と言っても特に無いんだけど、ファイルを3個開いたら勝手にHogeHoge()プロシージャが呼ばれて処理されるようになってます。

この書き方のポイント(メリット/デメリット)は以下の通り。

メリット

  • xlsmファイルが不要
    VBAマクロはPERSONAL.xlsbに書いているので、マクロを有効にしますか?というダイアログが出ない

  • ワークブックが開いた数をトリガーにして処理を実行できる
  • ファイルを開く処理をbatやshell等で自動化しておけば、ファイルを開いた瞬間に処理を実行できる

デメリット

  • PERSONAL.xlsbに処理を書くので、ブック固有やシート固有の処理は書けない

参考書籍

ExcelVBAに関してはこの本1冊で充分。
ExcelVBAを使うための説明はすべて書かれていますのでオススメです!

ちょっと分厚いので読破するのはしんどいですけどね(笑)

 

もうちょい簡単な方が良ければ、

 

ちなみに、これは僕がこれから買いたいと思っている本
評判良さそうなので、興味がある方は読んでみてください

まとめ

これは僕が実際に仕事で使った手法です。

ファイルを開くためのbatをこんな風に書きました。

Excelファイルが3つ開かれる → 処理が自動で動く → 処理される → 自動で閉じられる → 5秒待つ → (最初に戻る)

とまぁ、こんな感じになります。

興味ある方はぜひ試してみてください。
なかなか便利ですよ。

 

Boot Tech Programming School のレッスンに興味がある方、レッスン内容を聞いてみたい方、なんなりとお問い合わせください。
無料体験レッスンもありますのでお気軽にどうぞ!!!

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。