Ich denke, das ist eine einfache, aber da ich sehr neu in VBA bin, kann ich es nicht herausfinden.Öffnen von externen .pptx und .xlsx einmal und Ausführen mehrerer Unterprogramme auf ihnen
Ich habe einen Code, der entworfen wurde, um Daten aus einer dritten Excel-Tabelle zu kopieren und in mehrere Diagramme einer PowerPoint-Präsentation einzufügen.
Dieser Codecode oben öffnet die PowerPoint-Präsentation und die Excel-Tabelle. dir_pptx
und dir_xlsx
sind die entsprechenden Dateipfade.
Set ObjPPT = CreateObject("PowerPoint.Application")
Set ObjPresentation = ObjPPT.Presentations.Open("" & dir_pptx & "")
Workbooks.Open Filename:=dir_xlsx
Der Punkt ist, dass dieser Prozess in ~ 6 unabhängige subs unterteilt ist (und es hat so sein, ich weiß nicht, es ändern wollen), so jedes Mal muss ich die Präsentation aktualisieren muss ich laufen sub1
, speichern/schließen beide .pptx
und .xlsx
Dateien, führen sub2
, speichern/schließen, laufen sub3
, speichern/schließen und so weiter, weil sonst sub2
die Dateien erneut und aktualisiert sie sich öffnet, um die Änderungen zu verwerfen ich bereits in sub1
gemacht.
Meine Frage: wie diesen Code für die erste Überprüfung ändern, ob die Dateien bereits geöffnet sind und 1. Wenn sie nicht sind, öffnen Sie es; 2. Wenn dies der Fall ist, öffnen Sie sie nicht erneut und führen Sie die Routine mit diesen aus.
Vielen Dank @SteveRindsberg. Es ist ziemlich wie ich will, aber leider funktioniert es nicht. Als ich unter 2 lief, wurde die PPTX wieder als "nur Lesen" Datei geöffnet, just wie mein aktuelles Problem. – AYJK
Welche Syntax haben Sie damit verwendet? Legen Sie ObjPresentation = PresentationObject in Ihrer Hauptunterroutine fest, was funktionieren soll. –
Stimmt, vielleicht fange ich nichts. Das ist was ich mache: 'Sub1': 1.Ihr Code + xlsx Opener, den ich in meiner Frage erwähne 2. Verfahren zum Kopieren/Einfügen von xlsx und pptx Dateien durch' Workbooks (xlsx_name) .Sheets (1). Aktiviere '' Setze ObjSlide = ObjPresentation.Slides (slds (i)) '3. End sub. Für die nächsten Subs ist der Prozess ziemlich gleich. – AYJK