2

MSAccess で使用される C# COM オブジェクトを作成しました。私の目的には非常にうまく機能していますが、新しいオブジェクトが作成されたときにバージョン チェックを行い、VBA プログラマーに新しいバージョンが利用可能であることを即時ウィンドウを介して通知したいと考えています。

これは可能ですか?Debug.Print と Console.WriteLine を試しましたが、どちらも機能しません。

質問をするいくつかの投稿(このような)を見つけましたが、実際には答えを提供していません。

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# からこのサブルーチンを呼び出すこともできると思います。このメソッドの主な問題は、コードをステップ実行している場合、現在の処理のどこかにブレーク ポイントを設定した場合、またはポップアップ アラートを生成した場合 (これは送信キーの制限です) は機能しないことです。ただし、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 に答える