如何从Excel VBA代码向控制台写入内容?

12

有没有一种方法可以从Excel VBA宏向控制台打印消息? 我有一个小的VB .NET控制台应用程序,调用一个Excel宏,我希望宏代码中的错误消息能够打印到控制台。Debug.print不起作用,因为它只会打印到立即窗口。有什么想法吗?


这主要是因为即时窗口实际上是 VBA 应用程序的“控制台”。 - Rick Henderson
6个回答

13

我不得不使用Debug.Print(),因为Debug.Write()和Console.WriteLine()无法运行。


10

我发现在一个VB .NET工程和它调用的宏之间没有通信 - 宏无法访问VB的控制台,也无法抛出异常。如果宏中发生错误,VB .NET代码不会检测到该错误。 VB工程只是调用宏,它执行,然后工程继续运行,对宏中发生的事情一无所知。我解决这个问题的方法是让宏将错误写入Excel电子表格中的特定指定单元格,然后VB工程读取并使用它来确定是否有错误,如果有,则会将其写入控制台。这有点像欺骗性的修复,但它起作用了。感谢所有的建议!


5
你可以尝试使用Debug.WriteLine()将调试信息输出到Visual Studio输出窗口,但我有一种不安的感觉,除非你正在编写控制台应用程序,否则你无法这样做。
如果确实无法使用,请尝试使用Console.SetOut()方法将Console.WriteLine()字符串重定向到StreamWriter,可以是计算机上的文件。虽然不是最理想的解决方案,但可能是可行的解决方案?

1
传入文件路径并将所有错误写入文件。

0
您可以在VB.NET应用程序中创建一个COM组件,然后从VBA调用该组件并将内容写入应用程序的控制台。

2
值得吗?我不这么认为。 - ChaosPandion
根据情况而定。我们有一个 .net 应用程序,它会执行一些操作,然后启动 Excel 报告。报告的数据是通过 COM 接口从 Excel 中的 VBA 获取的,以便用户可以自定义报告。目前我们还没有这样做,但我可以看到未来可能需要在启动报告的主应用程序中显示报告的状态更新。 - burnside

0
为什么不返回一个字符串,其中包含来自宏的错误消息,并让 .Net 代码将其写入控制台?
或者,如果这些确实是错误,则可以使用 Err.Raise 从宏中引发错误,并使用 Try Catch 块在 .Net 代码中处理它们,并将详细信息写入控制台。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接