マクロは、Excelなどのプログラムの機能を拡張するための素晴らしい方法です。ただし、マクロからDOSバッチファイルを実行して、その機能をさらに拡張することもできます。 Excelでは、シェルコマンドを使用してこれを行うことができます。コマンドの一般的な構文は次のとおりです。

dRetVal = Shell("myfile.bat", mode)

引用符内に、実行するファイルのフルパス名とファイル名を配置できます。一部のシステムでは、ファイル指定でパス名を使用すると問題が発生する場合があります。 (複雑なパス名がある場合、またはパス名にスペースが含まれている場合、これは醜い頭を切り取るようです。)この問題がある場合は、Excelで使用されるディレクトリを変更するために、シェルの直前にChDirコマンドを使用します。その後、ファイル名だけを使用してシェルを実行できます。

モードインジケータは、ファイルを表示するためにウィンドウを開く方法をExcelに指示するだけです。モードインジケータは、次のいずれかになります。

Value

Variable Nam

Meaning

0

vbHide

Window is hidden and has focus.

1

vbNormalFocus

Window is the normal size and has focus.

2

vbMinimizedFocus

Window is minimized and has focus.

3

vbMaximizedFocus

Window is maximized and has focus.

4

vbNormalNoFocus

Window is normal size, but doesn’t have

focus.

6

vbMinimizedNoFocus

Window is minimized, but doesn’t have

focus.

Shellコマンドは、実行したファイルのプログラムIDを示す値を返すか、ゼロを返します。ゼロが返された場合は、ファイルの実行中にエラーが発生しました。

Shellを使用すると、ターゲットファイルがすぐに実行され、Excelとは独立して実行されることに注意してください。これは、Excelマクロの次のマクロコマンドが、シェルターゲットファイルの終了を待たずにすぐに実行されることを意味します。残念ながら、この動作を回避する方法はありません。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(2506)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。