Mein Arbeitgeber hat ein Tool von Drittanbietern, OfficeConverter von Conveter Technology, erworben, das die Konvertierung/Reparatur von Office 2003-formatierten Dateien in Office 2007-Format automatisiert. Dieses Tool automatisiert auch die Übersetzung/Änderung von Macro/VBA-Code-Anforderungen zwischen Office 2003 und 2007.Wie kann ich Klicks oder Schlüssel von einer VB6-Anwendung an ein Excel-Dialogfeld senden?
Mein Problem ist, dass während der Konvertierung das Tool das gewünschte Office-Produkt, etwa Excel, öffnet und dann die Zielbenutzerdatei öffnet (z. B. Report.xls) und dann jeden VBA-/Makrocode auf Änderungsanforderungen prüft. Das Problem ist, dass, wenn der Excel-Dateicode von einem externen Tool wie einer OCX-Datei abhängig ist und wenn dieses Tool auf dem PC, auf dem ich diese Aktion ausführe, nicht existiert, Excel eine Nachricht, die das Objekt hat, öffnet nicht gefunden, stoppt den gesamten Konvertierungsprozess (Tausende von Dateien in einer Zeile), bis jemand kommt und MANUELL auf die entsprechende Schaltfläche klickt, um die Dialogbox zu schließen.
Ich dachte, dass das Erstellen einer kleinen Überwachungsanwendung in VB6 (hey, ich bin alt und meine Fähigkeiten sind) könnte auf dem gleichen PC sitzen und für diese Dialogfelder und, je nach der spezifischen Nachricht, klicken Sie auf die entsprechende Schaltfläche über den SendMessage-API-Aufruf.
Das Problem ist, dass ich SendMessage nicht bekommen konnte, um tatsächlich die Taste für mich zu drücken, habe ich versucht, es den Return-Schlüsselwert (VbKeyReturn) oder sogar den Leertaste (VbKeySpace), aber die Aktion nie Das schließt die Dialogbox, so wie es sein sollte. Ich kann den Fokus auf den Tab zwischen den Schaltflächen in der Dialogbox setzen, aber das ist alles.
Ich habe versucht, SendKeys zu verwenden, aber das ist weit weniger zuverlässig und stark von der aktuellen Dokumentation, die ich gesehen habe, abgeraten.
Irgendwelche Vorschläge? :)
Haben Sie versucht, Escape zu senden? – stuartd