• ベストアンサー

excelオートメーションでの読込み先ファイルパス指定について

開発環境 VC++6.0 SP5 Windows2000SP4 MFC AppWizard(exe)使用 EXCEL2000タイプライブラリEXCEL9.OLBをインポートし、オートメーション機能を利用して、EXCEL表から値を読み込むプログラムを作っています。セル読込みは問題ないのですが、読込みファイル名を指定する部分で困っています。C直下にdata.xlsを置いておく場合、"C:\\data.xls"としておけば問題ないのですが、exeと同じディレクトリに置く場合の指定方法が分かりません。単に"data.xls"とすればよいと思うのですが、exe実行時に「'data.xls' が見つかりません。」とエラーが出てしまいます。".\\data.xls"としてみましたが同様でした。VC++上から実行してみても、exeを直接実行してみても同様でした。パスの指定方法が違っているだけだと思うのですが指定方法がわかりません。data.xlsをexeと同じディレクトリに置く場合はどうすればよいのでしょうか。 以下EXCEL読込みソースの一部です。 _Application app; // app is an _Application object. Workbooks books; LPDISPATCH lpDisp; COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); app.CreateDispatch("Excel.Application"); app.SetVisible(TRUE); // Get the Workbooks collection. lpDisp = app.GetWorkbooks(); // Get an IDispatch pointer. ASSERT(lpDisp); books.AttachDispatch(lpDisp); // Attach the IDispatch pointer lpDisp = books.Open("c:\\data.xls", // ここを"data.xls"とするとエラーになる covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional ); // 以下セルの値を取得する処理が続く・・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

COM から"Excel.Application" のようにエクセルアプリケーションオブジェクトを作る場合、既定のフォルダは、プログラムの起動フォルダにはなりません(というか普通ならないと考えた方がよい) ファイル名からフルパスを作ってやってフルパスで指定するのが良いです。

stzipper
質問者

お礼

レスありがとうございます。 GetCurrentDirectory()にてカレントディレクトリを取得してフルパスを指定したらうまくいきました! フルパス指定しないとダメなのですね。勉強になりました。ありがとうございました。

その他の回答 (1)

  • FAY
  • ベストアンサー率49% (95/193)
回答No.1

ご自身が言われているように"data.xls"でいけると思いますが・・・ もしかしてVCからデバッグで起動していませんか? VCから起動した場合、カレントディレクトリはEXEの場所ではなく、 プロジェクトがあるフォルダになります。 exeファイルを直接実行してみたり、 data.xlsを*.dspがあるフォルダにおいて実行したりするとどうなりますか?

stzipper
質問者

補足

レスありがとうございます。 私も"data.xls"で行けるはずだと思っているのですが、なぜがダメでした。 *.dspのあるディレクトリにdata.xlsを置いてVC上から起動しても、exeのあるディレクトリにdata.xlsを置いてexeから実行してもエラーになってしまいます・・。 プロジェクトファイル自体がおかしくなっているのでしょうか?

関連するQ&A

専門家に質問してみよう