和風スパゲティのレシピ

日本語でコーディングするExcelVBA

ブック・ファイル

アクティブブックの保存フォルダを開くマクロ

現在のブックが保存されているフォルダを、エクスプローラーで開くマクロを紹介します。「今作業してるファイルと同じフォルダにあるファイルを開きたい」をワンクリックでやるためのマクロですね。Shell関数1行で簡単に実装できます。

指定のフォルダをエクスプローラーで開く

指定のフォルダをエクスプローラーで開く方法を紹介します。この処理は、Shell "C:\windows\explorer.exe " & フォルダパス & "\", vbNormalFocusで実装できます。局所的な使い方のコードですので、おまじないだと思って使って構いません。

パスからフォルダ名やファイル名を取得する

パスからファイル名・フォルダ名を取得する方法を解説します。InstrRev関数で一番右の「\」を検索し、Midでその右側を取ってくることで目的の文字列を取得できます。また、Dir関数の性質を使ってDir(パス)から求めることもできます。

FileSystemObjectの呼び出しを短縮する方法

FileSystemObjectはとても便利なのですが、DimからCreateObjectまでの参照部分が面倒です。このCreateObjectを裏で行い、生成したFileSystemObjectを返すFunctionを用意することで、FileSystemObjectをあたかも定数のように扱えます。

Workbooks.Open中にShiftを押すとマクロが停止する

知らずに落ちると抜け出せなくなるVBAの落とし穴です。Wrokbooks.Open 以降が実行されない。マクロが何のエラーメッセージも出さずに静かに止まる。Exitもなく絶対実行されるはずの行が実行されない。あたりにお悩みの方は、この落とし穴を疑いましょう。

Dirループ中は別関数であっても他のDirは使えない

知らずに落ちると抜け出せなくなるVBAの落とし穴です。Dir関数が途中で止まる、逆に無限ループする、「プロシージャの呼び出し、または引数が不正です。」エラーを出す、あたりにお悩みの方は、この落とし穴に落ちていないかご確認ください。

ダイアログボックスでフォルダを指定・選択する

マクロの実行中に、ダイアログボックスを開き、ユーザーにフォルダを指定・選択してもらうコードを、コピペして使える関数にしたものを紹介します。ユーザーが選択したフォルダの「パス」を返す関数なので、Stringの変数に入れたりして使ってください。

ブックを現在開いているかチェックする関数

ある名前のブックを、現在開いているかを調べる関数を紹介します。Worksbooks(ブック名)の「インデックスが有効範囲にありません」エラーを回避するのによく使います。やり方は簡単で、教本のような「コレクションに対するFor Each」で処理します。