pywin32を使用してPythonでカスタムオブジェクトを作成しました。そのオブジェクトを呼び出す間に何度かかかります。 以下は、マクロが動作している間にアプリケーションがフリーズしないように、アプリケーションのstatに関して非同期にすることです。vbaで非同期関数呼び出しを行う方法
Sub demo()
demofunction
End Sub
Function demofunction()
Dim demoobj As Object
Do While demoobj Is Nothing
DoEvents
Set demoobj = CreateObject("Python.DemoObj")
Loop
Debug.Print demoobj.Hello
End Function
明らかに、コードは非同期実行に関しては機能しません。これはどんな方法でも可能ですか?
上記のコードは、しばらくの間アプリケーションをフリーズしながら正常に動作します。
'CreateObject'はブロッキング呼び出しです。ループは実際には何もしません。 – Comintern
私が欲しかったことを正しく理解してくれてありがとう。それは私が明らかに入れた理由です。私のコードは説明のためのものです。 – Rahul
VBAは非同期またはマルチスレッドを行いません。それが要件であれば、より最近の/強力な言語が必要です。 VB.NETまたはC#....を検討するか、VBScript + VBAで非同期ソリューションをハックアップしてください。あなたはそのテーマについて何か研究しましたか? –