AW: Dokument wird verwendet
20.09.2021 19:22:53
volti
Hallo Klaus,
Messageboxen (intern wie extern), die das Weiterlaufen eines Excelmakros stoppen, weil sie eine Antwort via Klick erwarten, lassen sich meistens mit ein paar API-Funktionen entsprechend klicken, so als wenn der User geklickt hätte.
Hierzu wird ein Timer gesetzt, dann die eigentliche Funktion ausgeführt und nach erfolgtem Klick durch VBA der Timer wieder gelöscht.
Hier mal ein Ansatz dazu...
Da ich keinen Spielcode von Dir habe, konnte ich das (noch) nicht finalisieren.
Z.B. muss ich wissen, was genau im Caption der Dialogbox steht.
Code:
[Cc][+][-]
Option Explicit
Private Declare PtrSafe Function KillTimer Lib "user32" ( _
ByVal hWnd As LongPtr, ByVal nIDEvent As LongPtr) As Long
Private Declare PtrSafe Function SetTimer Lib "user32" ( _
ByVal hWnd As LongPtr, ByVal nIDEvent As LongPtr, _
ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr
Private Declare PtrSafe Function SendDlgItemMessageA Lib "user32" ( _
ByVal hDlg As LongPtr, ByVal nIDDlgItem As Long, _
ByVal wMsg As Long, ByVal wParam As LongPtr, _
ByVal lParam As LongPtr) As LongPtr
Private Declare PtrSafe Function FindWindowA Lib "user32" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As LongPtr
Dim hTimer As LongPtr
Sub ClickOk()
On Error GoTo Fehler
hTimer = SetTimer(0&, 0&, 50, AddressOf DlgClickProc)
'OpenWorddatei.....
Fehler:
KillTimer 0&, hTimer
End Sub
Private Sub DlgClickProc()
' Klickt den Ja-Button an
Dim hDlg As LongPtr
hDlg = FindWindowA("#32770", "Dokument wird verwendet")
If hDlg > 0 Then SendDlgItemMessageA hDlg, 6, &HF5, 0&, 0& '6=ja, 2=nein
End Sub
_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz