そのため、.txtファイルを書き込んでから同じディレクトリにある.exeを呼び出すボタンを備えたマクロ対応のExcel/VBAワークブックがあります。.exeはC++で記述されており、別のファイルを出力することになっています。
私が抱えている問題は、何らかの理由でExcelワークブックがC ++ .exeを呼び出すと、実行可能ファイルが.txtからの情報を正常に処理しますが、出力ファイルが表示されないことです。ただし、ブックに.txtファイルを作成してから、自分でC ++プログラムを実行すると、プログラムはファイルを正しく出力します。
Excel / VBAブックから.exeを呼び出すと、.exeがファイルを出力しないようです。
これがExcel/VBAコードです
Open (ActiveWorkbook.Path & "\excel.txt") For Output As #1
Print #1, MyString
Close #1
ActiveWorkbook.FollowHyperlink (ActiveWorkbook.Path & "\MyProgram.exe"),
NewWindow:=True
そして、C ++は複数のファイルに分割されていますが、問題を引き起こしている可能性のある重要な部分は以下のとおりです。
ofstream OutputFile;
int Sequence[12];
...
...
OutputFile.open("Output.solution");
for (int i=1;i<12;i++)
OutputFile << Int_to_String(Sequence[i]) << " ";
OutputFile.close();
では、Excel VBAから呼び出されたときに、C ++実行可能ファイルに「Output.solution」ファイルを出力させるにはどうすればよいですか?明確にするために、C ++プログラムを個別に実行すると、ファイルが出力されます。
編集:.exeを個別に実行すると、適切な情報が同じディレクトリの「Output.solution」ファイルに配置されますが、Excel / VBAから呼び出すと、.exeは代わりに空の「Output.solution」をMyに配置します。ドキュメントフォルダ。
Excel / VBAから呼び出すときに、このファイルを元のディレクトリに戻すにはどうすればよいですか?また、Excelの外部で呼び出されたときと同じように、実際にファイルに情報が入力されるようにするにはどうすればよいですか?