開発環境 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;
COleVariantcovOptional((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 ); //
以下セルの値を取得する処理が続く・・・・
No.2ベストアンサー
- 回答日時:
COM から"Excel.Application" のようにエクセルアプリケーションオブジェクトを作る場合、既定のフォルダは、プログラムの起動フォルダにはなりません(というか普通ならないと考えた方がよい)
ファイル名からフルパスを作ってやってフルパスで指定するのが良いです。
レスありがとうございます。
GetCurrentDirectory()にてカレントディレクトリを取得してフルパスを指定したらうまくいきました!
フルパス指定しないとダメなのですね。勉強になりました。ありがとうございました。
No.1
- 回答日時:
ご自身が言われているように"data.xls"でいけると思いますが・・・
もしかしてVCからデバッグで起動していませんか?
VCから起動した場合、カレントディレクトリはEXEの場所ではなく、
プロジェクトがあるフォルダになります。
exeファイルを直接実行してみたり、
data.xlsを*.dspがあるフォルダにおいて実行したりするとどうなりますか?
この回答への補足
レスありがとうございます。
私も"data.xls"で行けるはずだと思っているのですが、なぜがダメでした。
*.dspのあるディレクトリにdata.xlsを置いてVC上から起動しても、exeのあるディレクトリにdata.xlsを置いてexeから実行してもエラーになってしまいます・・。
プロジェクトファイル自体がおかしくなっているのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Access(アクセス) Access2016のExcelインポートの機能のことで教えてください 1 2022/09/11 14:58
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) エクセルVBA Workbook変数に変数を使ったファイル名を格納したい 5 2023/06/13 14:46
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Visual Studio 「AnyCpu」について
-
「読み込み違反」が起きたとき...
-
excel vbaから実行するexe実行...
-
C#VB、exeに埋め込んだexeの実行
-
外部exe呼び出しの方法 ShellEx...
-
Windows PowerShellでC言語を実...
-
Pythonのコードをexe化
-
C++初心者です。 debug asserti...
-
ActiveDirectoryから値を取得
-
Eclipse CDT MinGWによるC言語
-
VB6 EXEとプログラムの違い
-
VBで「ファイル名を指定して実...
-
VBがデバッグ時落ちてしまう
-
VB6.0 exe作成時に実行時エラー...
-
Format 関数のバグ?
-
VisualStudioでC#が実行できない
-
vba 時間の引き算 例えば 15:00...
-
意味不明の実行時エラーで困っ...
-
VBSから別のVBS起動するとき変...
-
IT初心者です 仕事で、vb.netで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Visual Studio 「AnyCpu」について
-
excel vbaから実行するexe実行...
-
「読み込み違反」が起きたとき...
-
Windows PowerShellでC言語を実...
-
VB6.0 exe作成時に実行時エラー...
-
C#VB、exeに埋め込んだexeの実行
-
実行ファイル(.exe)が別のPC...
-
ActiveDirectoryから値を取得
-
ActiveX → VB を起動するとCre...
-
C++初心者です。 debug asserti...
-
androidで.exeを実行できますか?
-
Pythonのコードをexe化
-
VBにてDLLをデバックする方法。
-
ACCESSランタイムでエラー
-
実行ファイルの動作について
-
外部exe呼び出しの方法 ShellEx...
-
shell関数には二重引用符を渡せ...
-
VisualStudioでC#が実行できない
-
C#で実行可能なdllの作成方法
-
Eclipse CDT MinGWによるC言語
おすすめ情報