2

我编写了一个供 MSAccess 使用的 C# COM 对象。它对我的目的来说工作得很好,但我想在创建新对象时进行版本检查,并通过即时窗口通知 VBA 程序员有新版本可用。

这可能吗?我已经尝试过 Debug.Print 和 Console.WriteLine 但都不起作用。

我发现了几个提出问题的帖子(如this),但并没有真正提供答案。

4

1 回答 1

2

这是可能的……但不漂亮也不可靠。

这是我在进行研究和实验后刚刚写的一个 VBA 子程序,它可以满足您的需求。本质上是作为概念证明提供的。

Sub ImmediateWindowSendKeys(keys As String)
    set w = Application.VBE.windows("Immediate")
    w.SetFocus
    SendKeys keys
    w.Visible = True
End Sub

我假设你可以将它转换成你想要的语言,甚至可以从 C# 调用这个 sub。此方法的主要问题是,如果您正在单步执行代码、在当前处理的任何位置设置断点或生成弹出警报(这是发送键的限制),它就不起作用。但是,如果使用 F5 或从即时窗口运行,它确实有效。

我将尝试找出一种访问窗口内容的方法,但现在这是我能提供的最好的方法。

编辑:

根据您的评论,这应该同样没用。但是,我才刚刚开始涉足这种事情,所以这是一种游戏。这会将注释添加到当前模块的末尾。

Sub AddCommentsToEndOfModule()
    Set cm = Application.vbe.ActiveCodePane.CodeModule
    cm.InsertLines cm.CountOfLines + 1, "'Dear Developer " & vbCrLf & "'Hi" & vbCrLf & "'Sincerely," & vbCrLf & "'Me"
End Sub
于 2012-10-17T17:59:58.903 回答