web-dev-qa-db-ja.com

Excelのvbaコードからコンソールに書き込むにはどうすればよいですか?

Excel vbaマクロからコンソールにメッセージを印刷する方法はありますか? Excelマクロを呼び出す小さなVB .NETコンソールアプリケーションがあり、マクロコードからのエラーメッセージをコンソールに出力したいのですが。Debug.printは役に立ちません。すぐに表示されるウィンドウにのみ印刷されます。何かアイデアはありますか?

12
froadie

VB .NETプロジェクトとそれが呼び出すマクロの間に通信がないことがわかりました-マクロはVBのコンソールにアクセスできず、例外をスローバックできません。マクロでエラーが発生し、VB。NETコードでは検出されません。VBプロジェクトはマクロを呼び出すだけで実行され、プロジェクトは続行されますマクロで何が起こったのかを知らずに実行しています。これを回避する方法は、マクロにExcelスプレッドシートの特定の指定されたセルにエラーを書き込んでから、VBプロジェクトはそれを読み取り、エラーがあったかどうかを判断するためにそれを使用し、エラーがあった場合はコンソールに書き込みます。一種のチート修正ですが、機能しました。すべての提案に感謝します。

9
froadie

Debug.Write()とConsole.WriteLine()が機能しなかったため、Debug.Print()を使用する必要がありました

13
tree

Debug.WriteLine()を使用してデバッグ情報をVisualStudioの[出力]ウィンドウに出力してみることができますが、コンソールアプリケーションを作成しない限り、それを実行できないというしつこい感じがします。

実際に機能しない場合は、Console.SetOut()メソッドを使用して、Console.WriteLine()文字列をStreamWriterにリダイレクトしてみてください。StreamWriterはマシン上のファイルである可能性があります。理想的ではありませんが、おそらく実行可能な解決策ですか?

5
Phil.Wheeler

ファイルパスを渡し、すべてのエラーをファイルに書き込みます。

1
ChaosPandion

マクロからのエラーメッセージを含む文字列を.Netコードに返し、.Netコードにコンソールに書き込んでもらいませんか?

または、これらが本当にエラーである場合は、Err.Raiseを使用してマクロからエラーを発生させ、コンソールに詳細を書き込むTry Catchブロックを使用して.Netコードでエラーを処理します。

0
MarkJ

VBAから呼び出してアプリケーションのコンソールに書き込むことができるCOMコンポーネントをVB.NETアプリに作成できます。

0
burnside