2012年8月30日木曜日

ExcelのVBA(保存用ボタンを作る、その2)

前回、VBAで保存用マクロを作成したんですが、そのときファイル名指定を相対指定で行いました。てっきり*.xlsファイルがある場所がカレントだろうと思っていたんですが、試しているとどうも動きがおかしく、*.xlsファイルのある場所以外によくファイルが保存されます。
調べてみたら、VBAではカレントという概念があまりないようで、基本的に絶対パス指定か、ファイル指定用のダイアログを使ってファイル名を絶対パスでもらうのが本来の考え方のようです。その後、詳しく記載してあるページが見つかり*.xlsファイルのある場所はカレントにはならないことがわかりました。(OSやOfficeのバージョンによっても一概にはいえず、My DocumentsになったりProgram File内のOfficeがインストールされている場所が相対指定の場合カレントになってしまうようです)Excelを起動しておき、そこから「開く」を行って*.xlsファイルを指定してやると、*.xlsファイルのある場所(ダイアログによりファイルを指定しています)がカレントになるようです。

でもこれでは困ります。更に調べると、ありました*.xlsのある場所(パス)を指定する方法が。


    fnsave = ThisWorkbook.Path + "\Setting.txt"
    numff = FreeFile
    Open fnsave For Output As #numff


ThisWorkbook.Pathというのが、*xlsファイルのある場所(パス)示すそうです。これでうまくいきそうです。

0 件のコメント:

コメントを投稿