Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
676to680
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
676to680
676to680
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Macro funktioniert nun...aber

Macro funktioniert nun...aber
04.10.2005 13:03:12
Thomas
Moin alle Miteinander :-)
Also.... ich finde meinen Beitrag nicht wieder, daher ein neuer von mir.
Ich habe nun endlich folgendes Macro zusammengebastelt was soweit auch gut funktioniert:

Private Sub CommandButton1_Click()
' Er wechselt zur Reservierungsbestätigung
Sheets("Reservierungsbestätigung").Select
' Festlegen des aktuellen Druckers
Application.ActivePrinter = "Adobe PDF auf Ne05:"
' Definieren der PS und PDF Files
Dim PSFileName As String
Dim PDFFileName As String
PSFileName = "D:\Pension\Reservierungsbestätigungen\" & Range("B3").Value & ".ps"
If Range("B3").Value <> "D:\Pension\Reservierungsbestätigungen\" & Range("B3").Value & ".pdf" Then
PDFFileName = "D:\Pension\Reservierungsbestätigungen\" & Range("B3").Value & ".pdf"
End If
' Druckbereich angeben
Dim wsReser As Worksheet
Set wsResre = ActiveSheet
wsResre.Range("A1:H54").PrintOut Copies:=1, preview:=False, ActivePrinter:="Adobe PDF auf Ne05:", printtofile:=True, Collate:=True, prtofilename:=PSFileName
DistillerCall = "C:\Programme\Adobe\Acrobat 6.0\Distillr\Acrodist.exe" & _
" /n /q /o" & PDFFileName & " " & PSFileName
ReturnValue = Shell(DistillerCall, vbNormalFocus)
If ReturnValue = 0 Then MsgBox "Creation of " & PDFFileName & "failed."
Set pdfDist = Nothing
' Er wechselt zurück zur Erfassung-Reser
Sheets("Erfassung-Reser").Select
End Sub

Er speichert schön die drei Dateien ab (.log, .ps, .pdf) aber... da ist bezüglich des Dateinamens noch gewaltig der Wurm drinn!
Wie sag ich´s ihm, dass sich der Dateiname aus folgenden Feldern zusammensetzen soll:
Erfassung-Reser!B13+Erfassung-Reser!B14+Erfassung-Reser!B3+Erfassung-Reser!B4
Meine Versuche dies auch nur annähernd hin zu bekommen sind jämmerlich gescheitert!
Wäre über ne Antwort sehr Dankbar!
Gruß,
Thomas

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Macro funktioniert nun...aber
04.10.2005 14:10:08
Rocky
hallo, ich würde es mal damit versuchen:

Private Sub CommandButton1_Click()
' Er wechselt zur Reservierungsbestätigung
Sheets("Reservierungsbestätigung").Select
' Festlegen des aktuellen Druckers
Application.ActivePrinter = "Adobe PDF auf Ne05:"
' Definieren der PS und PDF Files
Dim PSFileName As String
Dim PDFFileName As String
Dim DatName As String
DatName = Sheets("Erfassung-Reser").Cells(13, 2).Value & Sheets("Erfassung-Reser").Cells(14, 2).Value & Sheets("Erfassung-Reser").Cells(3, 2).Value & Sheets("Erfassung-Reser").Cells(4, 2).Value
PSFileName = "D:\Pension\Reservierungsbestätigungen\" & DatName & ".ps"
If Range("B3").Value <> "D:\Pension\Reservierungsbestätigungen\" & DatName & ".pdf" Then
PDFFileName = "D:\Pension\Reservierungsbestätigungen\" & DatName & ".pdf"
End If
' Druckbereich angeben
Dim wsReser As Worksheet
Set wsResre = ActiveSheet
wsResre.Range("A1:H54").PrintOut Copies:=1, preview:=False, ActivePrinter:="Adobe PDF auf Ne05:", printtofile:=True, Collate:=True, prtofilename:=PSFileName
DistillerCall = "C:\Programme\Adobe\Acrobat 6.0\Distillr\Acrodist.exe" & _
" /n /q /o" & PDFFileName & " " & PSFileName
ReturnValue = Shell(DistillerCall, vbNormalFocus)
If ReturnValue = 0 Then MsgBox "Creation of " & PDFFileName & "failed."
Set pdfDist = Nothing
' Er wechselt zurück zur Erfassung-Reser
Sheets("Erfassung-Reser").Select
End Sub

gruß Rocky
Anzeige
AW: Macro funktioniert nun...aber
04.10.2005 14:33:07
Thomas
Moin Rocky!
Danke für Deine Antwort, die werde ich gleich ausprobieren!
Ich hatte in der zwischenzeit auch eine Lösung gefunden die bei mir so aussieht:
&ltpre&gt
Private Sub CommandButton1_Click()
' Er wechselt zur Reservierungsbestätigung
Sheets("Reservierungsbestätigung").Select
' Festlegen des aktuellen Druckers
Application.ActivePrinter = "Adobe PDF auf Ne05:"
' Definieren der PS und PDF Files
Dim PSFileName As String
Dim PDFFileName As String
Dim wsReser As Worksheet
Set wsReser = ThisWorkbook.Sheets("Reservierungsbestätigung")
PSFileName = "D:\Pension\Reservierungsbestätigungen\" & "Reservierung-Sachsenzimmer" & "-" & wsReser.Range("D22") & ".ps"
If Range("D22").Value &lt&gt "D:\Pension\Reservierungsbestätigungen\" & "Reservierung-Sachsenzimmer" & "-" & wsReser.Range("D22") & ".pdf" Then
PDFFileName = "D:\Pension\Reservierungsbestätigungen\" & "Reservierung-Sachsenzimmer" & "-" & wsReser.Range("D22") & ".pdf"
End If
' Druckbereich angeben
Rem Dim wsReser As Worksheet
Dim MySheet As Worksheet
Set MySheet = ActiveSheet
MySheet.Range("A1:H54").PrintOut Copies:=1, preview:=False, ActivePrinter:="Adobe PDF auf Ne05:", printtofile:=True, Collate:=True, prtofilename:=PSFileName
DistillerCall = "C:\Programme\Adobe\Acrobat 6.0\Distillr\Acrodist.exe" & _
" /n /q /o" & PDFFileName & " " & PSFileName
ReturnValue = Shell(DistillerCall, vbNormalFocus)
If ReturnValue = 0 Then MsgBox "Creation of " & PDFFileName & "failed."
Set pdfDist = Nothing
Kill "D:\Pension\Reservierungsbestätigungen\" & "Reservierung-Sachsenzimmer" & "-" & wsReser.Range("D22") & ".log"
Kill "D:\Pension\Reservierungsbestätigungen\" & "Reservierung-Sachsenzimmer" & "-" & wsReser.Range("D22") & ".ps"
' Er wechselt zurück zur Erfassung-Reser
Sheets("Erfassung-Reser").Select
End Sub&lt/pre&gt
Die "Kill" mal weggelassen, ist der Code so in Ordnung?
Das Kill: kommentiere ich das Kill aus, dann läuft es super - aber wenn ich das Kill drinnen lasse, passiert es von Zeit zu Zeit, dass die ganze Geschichte zusammenbricht. Ich reime mir das zusammen, dass die pdf-Datei fleißig erstellt wird, da aber die Datei noch gar nicht fertig erstellt wurde und der Kill-Befehl schon aktiv ist, wird er das ganze Macro abbrechen weil der Kill-Befehl die *.ps-Datei schon gelöscht hat während Acrobat noch gar nicht fertig ist oder noch gar nicht angefangen hat.
Gibt es eine Möglichkeit Kill zu sagen, dass er erst den vorherigen Vorgang abwarten soll?
Danke und Gruß,
Thomas
Anzeige
AW: Macro funktioniert nun...aber
04.10.2005 15:52:43
René
Hi,
nun ja es ist zwar schwierig, aber öffnet er nicht das pdf, nachdem er es erstellt hat? wenn du dann den activewindow.name ausließt und ihn vergelcihst mit dem dateiname (activewindow.name like "*" & Dateiname ".pdf") und das in einer do until unterbringst, dann könnte es gehen, ansonsten kann man auch über API's prozesse auslesen, wenn der prozess beendet ist, dann halt weiter im code, aber diese variante ist mit viel programmier arbeit verbunden...
lg René
AW: Macro funktioniert nun...aber
04.10.2005 17:22:15
Thomas
Hallo René,
Er öffnet die erstellte pdf-Datei nicht. Er soll sie nur speichern. Am ende soll das Macro folgendes durchlaufen haben:
1.) alle Daten aus der Erfassung in eine Archivtabelle Speichern
2.) Dann ein pdf-Dokument erzeugen und archivieren
3.) das erzeugte pdf-Dokument soll per Mail versandt werden.
Wenn der Kill-Prozess nicht zu ändern geht, werde ich das dann vielleicht so machen, dass ich ein Macro erstelle was beim schließen der Tabelle alle im Verzeichnis "XYZ" befindlichen *.log und *.ps-Dateien löscht. Im Prinzip stöhren die ja nicht, nur sollte sich nicht all zuviel Müll ansammeln :-)
Ich habe erst einmal ein Rem davor gesetzt bis ich eine Lösung gefunden habe denn der Kill-Befehl schlägt nicht jedesmal fehl. Ist Adobe schnell genug (oder mein Notebook :-) ) dann läuft alles super, er speichert die Daten ab, erstellt eine ps-Datei, wandelt diese in ein pdf um und löscht danach log und ps Dateien. Überig bleibt ne schöne schnucklige pdf-Datei. Ist aber Adobe etwas zu lahm, dann hat Kill schon alles gelöscht bevor Adobe eine Pdf-Datei erstellen kann.
Was ich aber sehr stark bei mir merke ist die Tatsache, dass ich das Gefühl habe, dass mir der Schädel gleich explodiert! :-)
Danke,
Gruß
Thoams
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige