2019年5月19日VBAEXCEL.EXEの場所はOSやOfficeのバージョンによって異なるVBAでEXCEL.EXEの場所を直接必要な場合がたまにあります。思いつくのはExcelの起動スイッチを含めて起動したい場合です。起動スイッチとは、Excelの起動方法を制御するためにExcel.exeに引数として渡す設定値のことです。以下のようなコマンドラインを実行すると、対象のブックが起動スイッチ「/r」によって読み取り専用で開きます。"C:\web\test.xlsx"起動スイッチのうち利用する機会がありそうなものを挙げるとすると以下のような物があります。指定したブックを読み取り専用で開きます。新規でExcelアプリケーションを起動します。新規Excelアプリケーションで指定したブックを読み取り専用で開きます。これらの起動スイッチはEXCEL.EXEの正確なパスに引数として渡す必要があるのですが、問題なのがそのEXCEL.EXEが置いてある場所です。OSの種類や32bitと64bitの違いやOfficeのバージョンによってフォルダの場所が変わってきます。そのため過去に書いたVBAのコードのEXCEL.EXEのパスが新しいPCでは動かないことが十分にあり得ます。そこで、このようなPC環境による違いによって書き分けをしなくてもいいように書く方法を紹介します。Application.PathでEXCEL.EXEのパスが取得できるPC環境の違いに関わらず、EXCEL.EXEの場所はApplication.Pathで取得することが出来ます。取得できるのはEXCEL.EXEが存在しているフォルダへのパス文字列で、右端には\マークは付与されません。Office\Office14」を取得できます。そのためEXCEL.EXEまでのパスを取得するのであれば”\EXCEL.EXE”を付与する必要があります。自分が使うPCとは異なる他のOSやOfficeのバージョンが異なるPCでApplication.Pathを実行すれば、そのPCに応じたパスを取得することが出来ます。EXCEL.EXEのパスを取得するコード先に書いたようにEXCEL.EXE自体のパスを取得する場合には、Application.Pathと”\EXCEL.EXE”を連結させた文字列が必要になります。都度それを書いているとコードが冗長化するため、EXCEL.EXEのフルパスを取得する関数を用意します。Function使い方GetExcelFullPath関数の使い方は以下のようになります。呼び出して変数に代入しているだけです。Office\Office14\EXCEL.EXE実行すると上記のように実行したPC環境に応じたEXCEL.EXEのパス文字列が返ります。起動スイッチを使う場合EXCEL.EXEのフルパスは上記のコードで取得できますが、Excelの起動スイッチを設定する場合は注意が必要です。注意する点はそのEXCEL.EXEまでのフルパスに空白が含まれている点です。空白文字はアプリケーションと引数の区切りに使われます。Files」フォルダは空白文字が含まれているため、パスとして途切れてしまいます。Office\Office14\EXCEL.EXE”」のように書きます。起動スイッチはダブルクォーテーションで囲ったあとに付与します。起動スイッチの後ろに空白文字を加えて対象のファイルを指定します。対象のファイルもEXCEL.EXEと同様にダブルクォーテーションで囲います。def\a.xlsx“」これで正しく動作する形になります。Excel作業をVBAで効率化シェアお問合わせTOPへ。