Anzeige
Archiv - Navigation
1136to1140
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
Inhaltsverzeichnis

If Dir ... If Qe ...

If Dir ... If Qe ...
Sandra
Hallo zusammen,
ich versuche gerade das "PDF_Print_Sheet" zu erweitern/ ergänzen und scheiter mal wieder kläglich.
Im Original sah es mal so aus:
Sub PDF_Print_Sheet()
'Modifiziert
Dim wks As Worksheet
For Each wks In ActiveWindow.SelectedSheets
With wks
.Select
If Dir(Environ("userprofile") & "\Desktop\" & .Name & ".pdf")  "" Then
Qe = MsgBox("Die Datei: " & .Name & ".pdf" & vbLf & "ist bereits vorhanden. _
_
" & vbLf & "Soll diese Datei ersetzt werden ?", vbQuestion + vbYesNo, "
ACHTUNG!!")
If Qe = vbNo Then Exit Sub
End If
.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Environ("userprofile") & "\Desktop\" & .Name & ".pdf", Quality:=xlQualityStandard, _
_
_
_
_
_
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End With
Next wks
End Sub

Nun wollte ich noch ein paar Ergänzungen einbauen.
1. Wenn die Prüfung ergeben hat, dass die Datei schon vorhanden ist, man sie aber nicht ersetzen möchte, dann soll die MsgBox kommen, in der nach einem Dateinamen gefragt wird.
2. Wenn dort die Namenseingabe abgebrochen wird soll nix passieren, wenn ein name eingegeben wird, dann soll natürlich die Datei unter neuem Namen abgelegt werden.
Das habe ich daraus gemacht:
Sub PDF_Print_Sheet()
'Modifiziert
Dim wks As Worksheet
For Each wks In ActiveWindow.SelectedSheets
With wks
.Select
If Dir(Environ("userprofile") & "\Desktop\" & .Name & ".pdf")  "" Then
Qe = MsgBox("Die Datei: " & .Name & ".pdf" & vbLf & "ist bereits vorhanden. _
" & vbLf & "Soll diese Datei ersetzt werden?", vbQuestion + vbYesNo, "ACHTUNG!!")
If Qe = vbNo Then strPDF_Name = InputBox("Geben Sie den Namen ein, unter  _
dem das Dokument gespeichert werden soll.", "Bitte neuen Dateinamen vergeben")
If Qe = vbYes Then Environ ("userprofile") & "\Desktop\" & .Name & ".pdf"
strPDF_Name = IIf(Right$(LCase(strPDF_Name), 4) = ".pdf", strPDF_Name, strPDF_Name & ".pdf")
End If
.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Environ("userprofile") & "\Desktop\" & .Name & ".pdf", Quality:=xlQualityStandard, _
_
_
_
_
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End With
Next wks
End Sub

Ich glaube diese Zeile ist sogar überflüssig, oder?
strPDF_Name = IIf(Right$(LCase(strPDF_Name), 4) = ".pdf", strPDF_Name, strPDF_Name & ".pdf")
ABER:
Probleme über Probleme:
1. Ein Name wird eingegeben - dieser wird aber nicht übernommen, stattdessen wird die bestehende Datei ersetzt (nach Test festgestellt). Hier muss ich wahrscheinlich noch festlegen, dass die Datei dann auch mit diesem Namen "exportiert" werden soll. Wahrscheinlich mit Hilfe von:
oWB.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Desktop & strPDF_Name, Quality:=xlQualityStandard, IncludeDocProperties:= _
True, IgnorePrintAreas:=False, OpenAfterPublish:=False
oder ähnlichem. Aber das ist mir schon jetzt zu kompliziert.
2. Wenn ich bei der Aufforderung zum Namen auf Abbruch gehe wird die Datei erstellt und die Alte überschrieben. Ich gehe davon aus, dass dies eine If Dir bzw. If Qe Zeile bedarf, aber da komme ich schon nicht mehr weiter.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: If Dir ... If Qe ...
13.02.2010 02:18:54
fcs
Hallo Sandra,
wenn nach Ja-Nein-Abfragen, je nach Antwort unterschiedliche Aktionen ausgelöst werden sollen, dann gehört in die entsprechende If-Prüfung der Antwort auch immer ein entsprechender Else-Abschnitt zur Behandlung der 2. Antwort.
Ich hab dein Makro mal so umgestrickt/ergänzt, dass die Logik passt. Zusätzlich hab ich ein paar Variablen eingeführt, um den Status der PDF-Ausgabe zu verfolgen und den korrekten PDF-Dateinamen zu übergeben.
Gruß
Franz
Sub PDF_Print_Sheet()
'Modifiziert - Erstellt unter Excel 2007
Dim wks As Worksheet, Qe
Dim sVerzeichnis As String, sPDF_Full_Name As String, sPDF_Name As String
Dim bPDF_Export As Boolean
sVerzeichnis = Environ("userprofile") & "\Desktop\"
For Each wks In ActiveWindow.SelectedSheets
With wks
.Select
sPDF_Name = .Name & ".pdf"
sPDF_Full_Name = sVerzeichnis & sPDF_Name
PruefungPDF_Name:
If Dir(sPDF_Full_Name)  "" Then
Qe = MsgBox("Die Datei: " & sPDF_Name & vbLf & "ist bereits vorhanden." _
& vbLf & "Soll diese Datei ersetzt werden ?", vbQuestion + vbYesNo, _
"ACHTUNG!!")
If Qe = vbNo Then
sPDF_Name = InputBox(prompt:="Geben Sie den Namen ein, unter " & _
"dem das Dokument gespeichert werden soll.", _
Title:="Bitte neuen Dateinamen vergeben", _
Default:=.Name & "_01.pdf")
If sPDF_Name  "" Then
If LCase(Right(sPDF_Name, 4))  ".pdf" Then
sPDF_Name = sPDF_Name & ".pdf"
End If
sPDF_Full_Name = sVerzeichnis & sPDF_Name
GoTo PruefungPDF_Name
Else
bPDF_Export = False
End If
Else
bPDF_Export = True
End If
Else
bPDF_Export = True
End If
If bPDF_Export = True Then
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPDF_Full_Name, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
End If
End With
Next wks
End Sub

Anzeige
VIELEN DANK!!!!
15.02.2010 08:00:24
Sandra
Hallo Franz,
vielen herzlichen Dank!!!!!
Gruß
Sandra
War's das dann,...
15.02.2010 23:12:23
Luc:-?
...Sandra...?
Vorgänger-Thread
Gruß Luc :-?
@LUC - nein, das war noch eine andere Ergänzung.
16.02.2010 10:41:50
Sandra
Hallo Luc.
Ich hoffe ich antworte jetzt im richtigen Thread.
Dies hier ist ein Anderes Thema. Hier werden alle aktiven Tabellenblätter in je eine pdf-Datei umgewandelt. Dabei heißt jede Datei genauso, wie das Tabellenblatt. Die Datei wird auch automatisch auf dem Desktop abgelegt. Außerdem erfolgt eine Prüfung ob es diese Datei schon gibt oder nicht und ob diese ggfs. ersetzt werden soll.
Hier ging es um die Aufforderung zur Eingabe des Dateinamen, für den Fall, dass man die vorhandene Datei nicht überschreiben möchte.
Gruß Sandra
Anzeige
AW: If Dir ... If Qe ...
16.02.2010 10:43:16
Sandra
Hallo Luc.
Ich hoffe ich antworte jetzt im richtigen Thread.
Dies hier ist ein Anderes Thema. Hier werden alle aktiven Tabellenblätter in je eine pdf-Datei umgewandelt. Dabei heißt jede Datei genauso, wie das Tabellenblatt. Die Datei wird auch automatisch auf dem Desktop abgelegt.
Hier ging es um die Ergänzende Prüfung, ob die Datei ggfs. Vorhanden ist und wenn ja, ob diese ersetzt werden soll oder nicht. Außerdem sollte die Aufforderung nach der Eingabe des Dateinamen ergänzt werden, für den Fall, dass man die vorhandene Datei nicht überschreiben möchte.
Gruß Sandra

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige