ブック・ファイル
現在のブックが保存されているフォルダを、エクスプローラーで開くマクロを紹介します。「今作業してるファイルと同じフォルダにあるファイルを開きたい」をワンクリックでやるためのマクロですね。Shell関数1行で簡単に実装できます。
指定のフォルダをエクスプローラーで開く方法を紹介します。この処理は、Shell "C:\windows\explorer.exe " & フォルダパス & "\", vbNormalFocusで実装できます。局所的な使い方のコードですので、おまじないだと思って使って構いません。
パスからファイル名・フォルダ名を取得する方法を解説します。InstrRev関数で一番右の「\」を検索し、Midでその右側を取ってくることで目的の文字列を取得できます。また、Dir関数の性質を使ってDir(パス)から求めることもできます。
FileSystemObjectはとても便利なのですが、DimからCreateObjectまでの参照部分が面倒です。このCreateObjectを裏で行い、生成したFileSystemObjectを返すFunctionを用意することで、FileSystemObjectをあたかも定数のように扱えます。
知らずに落ちると抜け出せなくなるVBAの落とし穴です。Wrokbooks.Open 以降が実行されない。マクロが何のエラーメッセージも出さずに静かに止まる。Exitもなく絶対実行されるはずの行が実行されない。あたりにお悩みの方は、この落とし穴を疑いましょう。
知らずに落ちると抜け出せなくなるVBAの落とし穴です。Dir関数が途中で止まる、逆に無限ループする、「プロシージャの呼び出し、または引数が不正です。」エラーを出す、あたりにお悩みの方は、この落とし穴に落ちていないかご確認ください。
マクロの実行中に、ダイアログボックスを開き、ユーザーにフォルダを指定・選択してもらうコードを、コピペして使える関数にしたものを紹介します。ユーザーが選択したフォルダの「パス」を返す関数なので、Stringの変数に入れたりして使ってください。
ある名前のブックを、現在開いているかを調べる関数を紹介します。Worksbooks(ブック名)の「インデックスが有効範囲にありません」エラーを回避するのによく使います。やり方は簡単で、教本のような「コレクションに対するFor Each」で処理します。