• ベストアンサー

Cからエクセルを開く処理についてです。

 いつもお世話になっております。  Cからエクセルを起動してVBAで作成した処理を 走らせたいのです。  そこで質問なのですが、Cでエクセルを開くときの関数は 普通にfopen()を使用すれば良いのでしょうか?  他に特別な処理をしなければならないこと等あれば、 教えてください。よろしくお願いします。

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

  • ベストアンサー
  • 774
  • ベストアンサー率43% (19/44)
回答No.3

大前提をひとつ忘れておりました。 MS-DOS上では、UNIXと違って popen()がサポートされていません。代替策は、参考URLをご覧ください。 で、コマンドプロンプトへのアクセスのオープンは、 fp=popen("command","w"); でいいと思います。 fprintf(fp, "C:\\test.xls"); で、コマンドプロンプトに C:\\texst.xls が入力されます。 厳密には、EXCEL.EXE までパスを通した状態で EXCEL c:\\texst.xls だと思いますが、拡張子が関連付けされているのでそのままでもXCEL が起動してそのファイルが開かれるとは思います。しかし、コマンドの後にリターンを押さないとコマンドが実行されませんので fprintf(fp,"EXCEL パス付ファイル名 \n"); と \n を入れる必要があると思います。 それから、EXCELの作業終了後、 pclose(fp); でクローズした方がいいと思いますが、 クローズするタイミングが問題ですね。 EXCEL が 標準入出力を扱えればいいのですが 申し訳ないですが私はよくわかりません。

参考URL:
http://www.dmst.aueb.gr/dds/sw/ports/popen/
keyed
質問者

お礼

 早々のご回答、ありがとうございます。 MS-DOS上では、UNIXと違って popen()がサポートされていません。 >この大前提のため苦しみましたが、ANo.#2を参考に何とかなりました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • 774
  • ベストアンサー率43% (19/44)
回答No.2

#1 のものです。すいません。嘘を書いてしましまいた。 >popen()は、外部コマンドの標準出力結果が返される関数です。 これは、うそです。 ファイル番号変数=popen("外部コマンド","w"); の後 fprintf(ファイル番号変数,"パラメタ"); で パラメタ を外部コマンドの標準入力に渡します。 ですから、コマンドプロンプト(command.com)を popen() に指定して、fprintf()で EXCEL をファイル名指定のパラメタつきで起動すればいいと思います。

keyed
質問者

補足

 ご回答ありがとうございます。 初心者なので、よくわからないので教えてください。  FILE *fp; fp = popen(command.com, "w"); fprintf(fp, "C:\\test.xls"); を実行すると、test.xlsは オープンしてくれるのですか?  よろしくお願いいたします。

すると、全ての回答が全文表示されます。
  • 774
  • ベストアンサー率43% (19/44)
回答No.1

fopen() では、EXCELのファイル自体をCから読み書きすることになり、keyed さんのされたいこととは異なると思います。 この場合、Cから外部コマンドを起動することになると思いますので、popen()を使うことになると思います。 popen()は、外部コマンドの標準出力結果が返される関数です。 外部コマンドとして、EXCEL.EXE をファイル名付きで起動することになると思います。

すると、全ての回答が全文表示されます。

関連するQ&A