Ich habe sendkey
verwendet, um auf Power Query zuzugreifen und eine Verbindung zum SharePoint-Ordner herzustellen. Alles war glatt, bis der Power Query Data Preview Dialog erscheint.
Wie erlaube ich sendkey
fortzufahren, nachdem der Dialog erscheint? Ich verwende die Schaltfläche, um Makro zu starten und Excel 2016 zu verwenden.
Aktualisieren
Ich habe auch versucht sendkey
zweimal mit True
, aber das gleiche Ergebnis, Stoppt den Dialog.
Update2
Ich habe versucht, was @peh vorgeschlagen hat, mit sleep()
und Application.wait()
. Ich fand heraus, dass, sobald das Makro initialisiert wurde, sendkey1
von Application.wait()
gestartet und gestoppt wurde. Erst nach Ablauf der Wartezeit wird sendkey1
verarbeitet. Und sobald sendkey1
gestartet wurde, startet auch sendkey2
.
Auch versucht, DoEvents
hinzuzufügen, sendkey1
funktioniert perfekt. Erst wenn Sie auf die Schaltfläche Abbrechen klicken, wird Application.wait()
und sendkey2
gestartet.
Pannel
Wenn das Dialogfeld jedes Mal dasselbe ist oder eine konsistente Textzeichenfolge in der Beschriftung enthält, können Sie mithilfe der Beschriftung möglicherweise feststellen, wann diese Funktion in einer Schleife mit einem Zeitgeber verwendet wird, der nach a sucht angemessene Zeit für die Dialogbox:
%Vor%Wo sCaption ist der Name Ihrer Dialogbox. Dann verwenden Sie in Ihrem Hauptteil des Codes:
%Vor%Ich bin gerade auf meiner Linux-Box, damit ich nicht daran herumprobieren kann, aber Sie könnten versuchen, andere Eigenschaften des Fensters mit einem Dienstprogramm wie:
zu lesenBearbeiten: Wenn
SendKeys
absolut nicht funktioniert, und Sie nicht die UI-Automatisierungsroute gehen wollen, und Sie eine Abhängigkeit nicht stören, könnten Sie AutoHotkey und Skript installieren das von VBA (zB mit dem BefehlShell()
). AHK ist robuster, wenn es um Tastaturmakroautomatisierung geht.
Wenn Sie beispielsweise einen eindeutigen Klassennamen hätten, könnten Sie FindWindowEx
verwenden, um das Fensterhandle zu erhalten:
Modul-Bereich ~
%Vor%Vorgehensweise ~
%Vor%Dieser Code ist nur ein Proof of Concept, da Sie beispielsweise mehrere Excel-Fenster öffnen können. Es sollte jedoch einen guten Ausgangspunkt geben.