我编写了一个由MSAccess使用的C#COM对象。它对我的目的非常有效,但我想在创建新对象时进行版本检查,并通过即时窗口通知VBA程序员新版本可用。
这可能吗?我已经尝试过Debug.Print和Console.WriteLine,但都不起作用。
我找到了几个提问的帖子(如this),但没有真正提供答案。
答案 0 :(得分:2)
这是可能的......但不是很漂亮或可靠。
这是我刚做完研究和试验后写的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