我编写了一个供 MSAccess 使用的 C# COM 对象。它非常适合我的目的,但我想在创建新对象时进行版本检查,并通过立即窗口通知 VBA 程序员有新版本可用。
这可能吗?我尝试过 Debug.Print 和 Console.WriteLine 但都不起作用。
我发现有几篇帖子(例如 this )提出了这个问题,但并没有真正提供答案。
最佳答案
这是可能的......但不漂亮或不可靠。
这是我在进行研究和实验后刚刚编写的一个 VBA 子程序,它可以满足您的需求。本质上是作为概念证明提供的。
Sub ImmediateWindowSendKeys(keys As String)
set w = Application.VBE.windows("Immediate")
w.SetFocus
SendKeys keys
w.Visible = True
End Sub
我假设您可以将其转换为您想要的语言,甚至可以从 C# 调用此子程序。此方法的主要问题是,如果您单步执行代码、在当前处理中的任何位置设置断点或生成弹出警报(这是发送键的限制),则该方法不起作用。但是,如果使用 F5 或从直接窗口运行,它确实可以工作。
我会尝试找到一种方法来访问窗口的内容,但现在这是我能提供的最好的方法。
编辑:
根据您的评论,这应该同样没用。不过,我才刚刚开始涉足这种事情,所以这只是一种玩法。这会将注释添加到当前模块的末尾。
Sub AddCommentsToEndOfModule()
Set cm = Application.vbe.ActiveCodePane.CodeModule
cm.InsertLines cm.CountOfLines + 1, "'Dear Developer " & vbCrLf & "'Hi" & vbCrLf & "'Sincerely," & vbCrLf & "'Me"
End Sub
关于c# - 是否可以从 C# COM 互操作对象写入 VBA 立即窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12939632/