Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Friedrichroda /
Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.

pdf speichern unter
#1
Hallo,

ich habe mir ein Makro erstellt, mit dem ich eine liste von allen für mich überflüssigen zeilen befreie und die liste dann als pdf mit einem aus der liste ausgelesenen namen an einen bestimmten speicherort ablege.

das klappt alles so weit sehr gut, nur möchte ich, dass der mir nicht die datei immer an die gleiche stelle legt sondern mich vorher fragt wo ich sie hin haben will...
den namen soll er automatisch generieren und auch "speichern als pdf" soll ausgewählt sein aber den ort möchte ich individuell bestimmen...

geht das?

hier mein makro:

Code:
Sub drucken2()
Dim iRowL As Integer, iRow As Integer
'Array fuer Druckbedingung und Seiten
Dim arrPrint, arrSeiten
'Array fuer Druckbedingung fuellen - hier die Zellen jedes Blattes definieren
arrPrint = Array("C6", "B54", "C104", "B152", "C202", "B250", "C300", "B348", "C398", "B446", "C496", "B544", "C594", "B642", "C692", "B740", "C790", "B838", "C888", "B936")
'Array fuer Seiten
arrSeite = Array("1:49", "50:98", "99:147", "148:196", "197:245", "246:294", "295:343", "344:392", "393:441", "442:490", "491:539", "540:588", "589:637", "638:686", "687:735", "736:784", "785:833", "834:882", "835:931", "932:981")
'Nummer der zuletzt genutzten Zeile anhand Spalte C feststellen
iRowL = Cells(Rows.Count, 3).End(xlUp).Row
'Schleife bis zur letzten genutzten Zeile
For iRow = 1 To iRowL
   'Wenn Zellwert 0, dann
   If Cells(iRow, 3).Value = "0" Then
     'Zeile ausblenden
     Rows(iRow).Hidden = True
   'Ende Wenn Zellwert 0, dann
   End If
'Ende Schleife bis zur letzten genutzten Zeile
Next iRow
'Schleife ueber alle Blaetter anhand Zellen mit Druckbedingung
For iRow = 0 To UBound(arrPrint)
  'Wenn Druckbedingung = "-----", dann
  If Range(arrPrint(iRow)) = "0" Then
    'Seite ausblenden
      Rows(arrSeite(iRow)).Hidden = True
  'Ende Wenn Druckbedingung = "-----", dann
  End If
'Ende Schleife ueber alle Blaetter anhand Zellen mit Druckbedingung
Next iRow

'Application.Dialogs(xlDialogSaveAs).Show
Dateiname = DateiPfad & Range("B1") & " " & Range("C3") & ".pdf"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Dateiname, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False

Rows.Hidden = False
End Sub

relevant dürften ja nur die letzten paar zeilen sein

p.s. ich habe es nicht geschafft als spoiler zu schreiben geht das irgendwie?
to top
#2
Hallo,

mal völlig ungetestet hier rein geschrieben

Code:
'Variablendekleration am Anfang des Codes
Dim strDateiname As String


'Application.Dialogs(xlDialogSaveAs).Show

strDateiname = InputBox("Wählen Sie einen Dateinamen aus")
Dateiname = DateiPfad & strDateiname & ".pdf"

PS: Was meinst Du eigentlich mit deinem letzten Satz?
Gruß Stefan
Win 7 / Office 2007
to top
#3
Nee, so wie ich das verstehe, will er den Speicherpfad variabel haben, da ist die Inputbox suboptimal, weil fehlerträchtig
Mit freundlichen Grüßen  Smile
Michael

Win 10 64 bit / Excel 2007/2016
to top
#4
Hallo Michael,

Du hast Recht, das habe ich überlesen. AngryAngryAngry
Gruß Stefan
Win 7 / Office 2007
to top
#5
Hallöchen,

hier mal mein Vorschlag zum Speichern der Exceldaten als pdf.

Code:
Sub SpeichernUnter()
'Variablendeklaration
'Variant
Dim Dateiname As Variant 'Wegen unterschiedlicher Rueckgaben beim Dialog
'Dateiname festlegen
Dateiname = DateiPfad & Range("B1") & " " & Range("C3") & ".pdf"
'Dialog zur Auswahl des Dateinamens aufrufen
Dateiname = Application.GetSaveAsFilename(InitialFileName:=Dateiname, _
            FileFilter:="PDF Dateien (*.pdf), *.pdf")
'Bei Abbruch Makro verlassen
If VarType(Dateiname) = 11 Then Exit Sub
'Datei als pdf speichern
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
   Dateiname, Quality:=xlQualityStandard, _
   IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
   False
End Sub
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
  • plau
to top
#6
top danke das klappt Smile

jetzt habe ich das problem, dass wenn ich das makro ausführe, aber dann nicht speicher sondern abbrechen drücke, das er mir die vorher ausgeblendeten zeilen nicht wieder einblendet...

wenn ich speicher dann zeigt er mir sie wieder an

ich poste einfach mal mein ganzes makro

Code:
Sub drucken2()
Dim iRowL As Integer, iRow As Integer
'Array fuer Druckbedingung und Seiten
Dim arrPrint, arrSeiten
'Array fuer Druckbedingung fuellen - hier die Zellen jedes Blattes definieren
arrPrint = Array("C6", "B54", "C104", "B152", "C202", "B250", "C300", "B348", "C398", "B446", "C496", "B544", "C594", "B642", "C692", "B740", "C790", "B838", "C888", "B936")
'Array fuer Seiten
arrSeite = Array("1:49", "50:98", "99:147", "148:196", "197:245", "246:294", "295:343", "344:392", "393:441", "442:490", "491:539", "540:588", "589:637", "638:686", "687:735", "736:784", "785:833", "834:882", "835:931", "932:981")
'Nummer der zuletzt genutzten Zeile anhand Spalte C feststellen
iRowL = Cells(Rows.Count, 3).End(xlUp).Row
'Schleife bis zur letzten genutzten Zeile
For iRow = 1 To iRowL
   'Wenn Zellwert 0, dann
   If Cells(iRow, 3).Value = "0" Then
     'Zeile ausblenden
     Rows(iRow).Hidden = True
   'Ende Wenn Zellwert 0, dann
   End If
'Ende Schleife bis zur letzten genutzten Zeile
Next iRow
'Schleife ueber alle Blaetter anhand Zellen mit Druckbedingung
For iRow = 1 To iRowL
    If Cells(iRow, 2).Value = "0" Then
        Rows(iRow).Hidden = True
    End If
Next iRow
For iRow = 0 To UBound(arrPrint)
  'Wenn Druckbedingung = "-----", dann
  If Range(arrPrint(iRow)) = "0" Then
    'Seite ausblenden
      Rows(arrSeite(iRow)).Hidden = True
  'Ende Wenn Druckbedingung = "-----", dann
  End If
'Ende Schleife ueber alle Blaetter anhand Zellen mit Druckbedingung
Next iRow

'Application.Dialogs(xlDialogSaveAs).Show
Dateiname = DateiPfad & Range("B1") & " " & Range("C3") & ".pdf"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Dateiname, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
Dateiname = Application.GetSaveAsFilename(InitialFileName:=Dateiname, _
            FileFilter:="PDF Dateien (*.pdf), *.pdf")
'Bei Abbruch Makro verlassen
If VarType(Dateiname) = 11 Then Exit Sub
'Datei als pdf speichern
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
   Dateiname, Quality:=xlQualityStandard, _
   IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
   False
Rows.Hidden = False
End Sub
to top
#7
Hallo,

Du verläßt das Makro wenn Du abbrichst. Wenn vorher die Zeilen noch eingeblendet werden sollen, mache die Zeile so

Code:
If VarType(Dateiname) = 11 Then Rows.Hidden = False: Exit Sub
Gruß Stefan
Win 7 / Office 2007
[-] Folgende(r) 1 Benutzer sagt Danke an Steffl für diesen Beitrag:
  • plau
to top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste