2016-07-18 10 views
1

Ich erstelle eine Powerpoint-Datei und Hinzufügen von Folien programmgesteuert über Access-VBA und es funktioniert gut bis jetzt. Nun aber möchte der Client, dass der ppt während der Generierung unsichtbar oder minimiert sein sollte. Nachdem ich das ppt-Objekt aktiviert habe, setze ich es minimiert, aber dann, während 'Slides.Add', erscheint es wieder, also muss ich es wieder minimieren. Das Problem ist, dass dadurch der Fokus des Cursors auf ppt anstatt auf das Dokument, an dem er arbeitet, verschoben wird. Also, gibt es eine Möglichkeit, ich könnte es vollständig minimiert oder diese Generation im Hintergrund arbeiten und nur öffnen, sobald es fertig ist? Der Code Ich verwende ist:Hinzufügen von Folien in Powerpoint von Access VBA nur minimiert

Dim shpGraph As Object, Shpcnt As Integer, FndGraph As Boolean 
Dim lRowCnt, lColCnt, lValue As Long, CGFF_FldCnt As Integer 
Dim OPwrPnt As Object, OpwrPresent As Object, OpwrSlide As Object 
Set OPwrPnt = CreateObject("Powerpoint.application") 
Set OpwrPresent = OPwrPnt.Presentations.Add(WithWindow:=msoFalse) 
Set OpwrSlide = OpwrPresent.Slides.Add(slideCounter, PpSlideLayout.ppLayoutTitle) 
OPwrPnt.WindowState = ppWindowMinimized 
slideCounter = slideCounter + 1 
lheight = OPwrPnt.ActivePresentation.PageSetup.SlideHeight/2 
lwidth = OPwrPnt.ActivePresentation.PageSetup.SlideWidth/1 
LLeft = 0 
lTop = OPwrPnt.ActivePresentation.PageSetup.SlideHeight/4 
Set shpGraph = OpwrPresent.Shapes.AddOLEObject(Left:=LLeft, _ 
       Top:=lTop, Width:=lwidth, Height:=lheight, _ 
       ClassName:="MSGraph.Chart", Link:=0).OLEFormat.Object 

ich den Code geschrieben haben, die Window kurz vor und nach der Funktion Hinzufügen zu minimieren, aber dennoch erscheint es oben nur für einen Bruchteil einer Sekunde, daher der Cursor Fokus von sich bewegenden dokumentieren sie arbeiten an die ppt, die sie nicht wollen. Also wie kann ich es vollständig minimiert halten?

+0

Die beste Empfehlung wäre, den Powerpoint vorzubelegen Wie viele Dias werden benötigt, aber wenn Sie es sind, fügen Sie einfach die entsprechenden hinzu ct Anzahl der Folien, minimieren Sie das Dokument, dann durchlaufen Sie die Folien durch Index in einer Schleife – RGA

+0

@ RGA Danke für die Antwort, aber das ist, was ich bereits mache, ist dieses Code-Snippet nur seine minimierte Version. Aber sie wollen das direkt nach dem Klicken auf die Schaltfläche Erzeugen, sollte die ppt Generation im Hintergrund geschehen und sollte nicht jederzeit vor der Fertigstellung popup. –

Antwort

1

Sie können ohne Fenster, um das Powerpoint-Objekt öffnen (vorausgesetzt, Sie nie

Set oPPTPres = oPPTApp.Presentations.add(WithWindow:=msoFalse) 

dann Select oder irgendwelche Active... Referenzen verwenden, das Hinzufügen Folien dieser Präsentation sollte vollständig unsichtbar durchgeführt werden. Danach, ich glaube dir Speichern, schließen und erneut öffnen der Präsentation (mit der Eigenschaft WithWindow auf True gesetzt), um sie anzuzeigen

+0

Danke, könntest du mir bitte einen einfachen Code-Ausschnitt von dem geben, was du erzählen willst. Das wäre sehr hilfreich. –

+0

@HemantSisodia ein Ausschnitt von was? – RGA

+0

ok Lemme spiele zuerst mit deinem Vorschlag herum. –