Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

PDF von 2 Tabs Pfad verschieden | Herbers Excel-Forum


Betrifft: PDF von 2 Tabs Pfad verschieden von: Thomas
Geschrieben am: 22.01.2012 15:36:25

Hallo Excelfreunde,

hab da noch ein problem. Mit unten stehendem Code was ich schon in einer anderen Datei benütze wollte ich in meiner neuen Datei zum laufen bringen aber er erzeugt mir nicht die gewünschten PDF.

Private Sub CommandButton1_Click()
  Dim ArrDruck() As String
  Dim i As Integer
  ArrDruck = Split("Rechnung, Rechnung_Kopie,Brief", ",")    
  For i = 0 To UBound(ArrDruck)
    With ThisWorkbook.Sheets(ArrDruck(i))
      .PrintOut copies:=1
      If .Name = "Rechnung" And "Brief" Then      <<<>> mit "Rechnung"  _
gehts
     
        'Blatt ggf. als PDF-Datei speichern und anzeigen
        If MsgBox(Prompt:="Blatt """ & .Name & """ als PDF-Datei exportieren?", _
            Buttons:=vbQuestion + vbYesNo, Title:="PDF-Datei erstellen") = vbYes Then
          .ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:="C:\Users\Das ist mein Pfad.............PDF Dateien\" & ActiveSheet.Range( _
 _
"B4") & "_" & ActiveSheet.Range("B5").Text _
                & "-" & Format(Now, "YYYY-MM-DD hh-mm-ss") & " PDF.pdf", _
            Quality:=xlQualityStandard, IncludeDocProperties:=False, _
            IgnorePrintAreas:=False, OpenAfterPublish:=True
        End If
      End If
      End With
  Next
End Sub

Wie bekomme ich das hin das der Code mir für die Rechnung eine PDF erzeugt und für den Brief auch aber mit einem anderen Pfad??

Kann mir da jemand helfen?

Gruß Thomas

  

Betrifft: AW: PDF von 2 Tabs Pfad verschieden von: Dirk
Geschrieben am: 22.01.2012 19:01:56

???
ich versteh die Frage nicht ganz
willst du das Briefe unter z.B. C:\Breife
und für Rechnungen z.B. C:\Rechnungen???

wenn ich das so richtig verstanden habe brauchst du nur bei "if .Name ....
etwas ergänzen

If .Name = "Rechnung" And "Brief" Then      <<<>> mit "Rechnung"  _
gehts
if .Name ="Rechnung" then
strPfad="C.\Rechnung\"
else
strPfad="C.\Breife\"
und aus
 Filename:="C:\Users\Das ist mein Pfad.............PDF Dateien\" & ActiveSheet.Range(...........
musst du dann nur
Filename:=strPfad & ActiveSheet.Ra...............
machen

ACHTUNG CODE NICHT GESTESTET

Gruß
Dirk


  

Betrifft: AW: PDF von 2 Tabs Pfad verschieden von: Dirk
Geschrieben am: 22.01.2012 19:09:27

Sorry Tippfehler

nochmal vollstänidig

wenn ich dich richtig verstanden habe die Briefe nach z.B. C:\briefe und die Rechnungen nach z.B. C:\rechnungen

Auch hier wieder

ACHTUNG CODE NICHT GETESTET

Private Sub CommandButton1_Click()
  Dim ArrDruck() As String
  Dim i As Integer
  ArrDruck = Split("Rechnung, Rechnung_Kopie,Brief", ",")    
  For i = 0 To UBound(ArrDruck)
    With ThisWorkbook.Sheets(ArrDruck(i))
      .PrintOut copies:=1
      If .Name = "Rechnung" And "Brief" Then      <<<>> mit "Rechnung"  _
gehts
if .name ="Rechnung" then
stgPfad="C:\Rechnung\"
else
stgPfad="C:\Brief\"
end if     

        'Blatt ggf. als PDF-Datei speichern und anzeigen
        If MsgBox(Prompt:="Blatt """ & .Name & """ als PDF-Datei exportieren?", _
            Buttons:=vbQuestion + vbYesNo, Title:="PDF-Datei erstellen") = vbYes Then
          .ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=stgPfad & ActiveSheet.Range( _
 _
"B4") & "_" & ActiveSheet.Range("B5").Text _
                & "-" & Format(Now, "YYYY-MM-DD hh-mm-ss") & " PDF.pdf", _
            Quality:=xlQualityStandard, IncludeDocProperties:=False, _
            IgnorePrintAreas:=False, OpenAfterPublish:=True
        End If
      End If
      End With
  Next
End Sub



  

Betrifft: AW: PDF von 2 Tabs Pfad verschieden von: Thomas
Geschrieben am: 22.01.2012 19:43:05

Hallo Dirk,


If .Name = "Rechnung" so bekomme ich die PDF. Mein versuch ging dahin das ich es mit If .Name = "Rechnung" And "Brief" Then probierte aber ging ja nicht.

Hab ne pause gemacht um wieder den Kopf frei zu bekommen und hab das nun nach einer Stunde nun so hin bekommen aber bitte hab verständnis ich übe noch.

Private Sub CommandButton1_Click()
  Dim ArrDruck() As String
  Dim i As Integer
  Dim i1 As Integer
  ArrDruck = Split("Rechnung", "Rechnung_Kopie")     
  For i = 0 To UBound(ArrDruck)
    With ThisWorkbook.Sheets(ArrDruck(i))
      .PrintOut copies:=1
      If .Name = "Rechnung" Then
     
        'Blatt ggf. als PDF-Datei speichern und anzeigen
        If MsgBox(Prompt:="Blatt """ & .Name & """ als PDF-Datei exportieren?", _
            Buttons:=vbQuestion + vbYesNo, Title:="PDF-Datei erstellen") = vbYes Then
          .ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:="C:\Users\Das ist mein Pfad\..............\PDF Dateien\" & ActiveSheet. _
Range("B4") & "_" & ActiveSheet.Range("B5").Text _
                & "-" & Format(Now, "YYYY-MM-DD hh-mm-ss") & " PDF.pdf", _
            Quality:=xlQualityStandard, IncludeDocProperties:=False, _
            IgnorePrintAreas:=False, OpenAfterPublish:=True
       End If
       End If
    End With
       Next
       
      ArrDruck = Split("Brief")
     For i1 = 0 To UBound(ArrDruck)
      With ThisWorkbook.Sheets(ArrDruck(i1))
      .PrintOut copies:=1
      If .Name = "Brief" Then
     
        'Blatt ggf. als PDF-Datei speichern und anzeigen
        If MsgBox(Prompt:="Blatt """ & .Name & """ als PDF-Datei exportieren?", _
            Buttons:=vbQuestion + vbYesNo, Title:="PDF-Datei erstellen") = vbYes Then
          .ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:="C:\Users\Das ist mein Pfad\.............\Briefe an\" & ActiveSheet.Range( _
"B4") & "_" & ActiveSheet.Range("B5").Text _
                & "-" & Format(Now, "YYYY-MM-DD hh-mm-ss") & " PDF.pdf", _
            Quality:=xlQualityStandard, IncludeDocProperties:=False, _
            IgnorePrintAreas:=False, OpenAfterPublish:=True
        End If
        End If
      
      End With
  Next
 
End Sub
Aber ich versuch mich auch an Deinem Code und wenn der geht nehm ich dann die kurze Version.

Dank Dir Gruß Thomas


  

Betrifft: AW: PDF von 2 Tabs Pfad verschieden von: Dirk
Geschrieben am: 22.01.2012 20:25:15

Hallo Thomas

dann hatte ich dich also doch richtig verstanden gehabt

du hast die Abfragen jetzt gesplittet und den Code koppiert.

wenn du bei deiner Abfrage bist
das muss übrigens oder und nicht und heißen

If .Name ="Rechnung or "Brief"
brauchst du dannach nur noch den Speicherpfad in einer Variablen definieren und den Pfad unten durch den Angegeben Pfad ersetzten
if .name ="Rechnung" then
stgPfad="C:\Users\Das ist mein Pfad\..............\PDF Dateien\"
else
stgPfad="C:\Users\Das ist mein Pfad\.............\Briefe an\"
end if   
andere Unterschiede zwischen den Wiederhohlungen kann ich auf anhieb nicht finden
dann kannst d die Variable il as Integer auch wieder raus nehmen und durch
stgPfad as String
ersetzen


  

Betrifft: AW: Code noch etwas anpassen von: Thomas
Geschrieben am: 22.01.2012 20:34:03

Hallo Dirk,

ich habe Dein Code versucht. Pfad angepasst und gestartet aber kam der Fehler Variable nicht difiniert hab Dim StgPfad As String, Long, Integer versucht es kommt noch immer der Fehler Typen unverträglichkeit aber es wird mir nichts angezeigt wo der Fehler nun kommt.

Dies zur Rückmeldung auf Dein Code.

Gruß Thomas


  

Betrifft: AW: Code noch etwas anpassen von: Thomas
Geschrieben am: 22.01.2012 20:52:47

Hallo Dirk,

hab alles gemacht es wird nur der Druckauftrag abgearbeitet aber die PDF wird nicht erzeugt kommt noch immer der Fehler Typen unverträglichkeit aber es wird nichts angezeigt.


Gruß Thomas


  

Betrifft: AW: Code noch etwas anpassen von: Dirk
Geschrieben am: 23.01.2012 17:34:01

Hallo Thomas



Hier verabschiedet der sich bei mir

ArrDruck = Split("Rechnung, Rechnung_Kopie,Brief", ",")    

mal so aus neugier wieso hast du die Schleife


 For i = 0 To UBound(ArrDruck)

geschreiben??



ich hätte das so geschrieben
      Sub Brief_Rechnung_pdf_Druck()
      Dim ArrDruck() As String
        Dim i As Integer
        ArrDruck = Split("Rechnung, Rechnung_Kopie, Brief")
       For Each Worksheet In Worksheets
          With Worksheet
            .PrintOut copies:=1
            If .Name = "Rechnung" Or .Name = "Brief" Then
                If .Name = "Rechnung" Then
                    spstg = "C:\Tester\Rechnung\"
                Else
                    spstg = "C:\Tester\Brief\"
                End If
                   If MsgBox(Prompt:="Blatt """ & .Name & """ als PDF-Datei exportieren?", _
                      Buttons:=vbQuestion + vbYesNo, Title:="PDF-Datei erstellen") = vbYes Then
                        .ExportAsFixedFormat Type:=xlTypePDF, _
                        Filename:=spstg & ActiveSheet.Range("B4") _
                        & "_" & ActiveSheet.Range("B5").Text _
                        & "-" & Format(Now, "YYYY-MM-DD hh-mm-ss") & " PDF.pdf", _
                        Quality:=xlQualityStandard, IncludeDocProperties:=False, _
                        IgnorePrintAreas:=False, OpenAfterPublish:=True
              End If
            End If
            End With
        Next
      End Sub

Gruß

Dirk


  

Betrifft: AW: Code noch etwas anpassen von: Thomas
Geschrieben am: 23.01.2012 19:03:17

Hallo Dirk,

ArrDruck = Split("Rechnung, Rechnung_Kopie,Brief", ",") ich brauch das Komma in Anführungzeichen.

Zum anderen ist das nicht mein Code den hab ich mit Hilfe aus dem Forum hir also kann ich nichts für die Schleife.

Ich bekomme die erste PDF angezeigt und dann kommt Variable nicht difiniert wie immer.

Ich habe den Code im Tab Rechnung stehen das ist doch richtig?
Werd mich noch weiter an deinem Code versuchen denn das muss kürzer gehen als wie ich des gemacht habe mit dem zweiten Code.

Ich dank dir Dirk und ich bleib dran geht nicht gibts bei mir nicht..... zunächts mal nicht :))

Gruß Thomas


  

Betrifft: AW: Code noch etwas anpassen von: Dirk
Geschrieben am: 23.01.2012 19:25:05

Hallo Thomas,

ok ich hab gerade mal etwas gelesen wenn ich das richtig verstanden habe bildest du mit

ArrDruck = Split("Rechnung, Rechnung_Kopie,Brief", ",")

ein Array, das mit 3 Variablen gefüllt ist.

Damit die Schleife Sauber abgearbeitet werden kann, die du ja mit
For i = 0 To UBound(ArrDruck)

von 0 bis 3 definiert hast müssen aber auch genau diese Tabllenblätter alle vorhanden sein.

Die Schleife die ich verwendet habe fragt ALLE Tabellen kurz ab
 For Each Worksheet In Worksheets

für jedes Blatt von den Blättern so kannst du das verstehen
da ich aber direkt im Anschluss den Namen des Blattes Prüfe und somit aussortiere sollte das von der abarbeitungsgeschwindigkeit her nicht störend sein.

ach verflucht
das .print gehöhrt eine Zeile tiefer
      Sub Brief_und_Rechnung_pdf_Druck()
      Dim ArrDruck() As String
        Dim i As Integer
        ArrDruck = Split("Rechnung, Rechnung_Kopie, Brief")
       For Each Worksheet In Worksheets
          With Worksheet
            If .Name = "Rechnung" Or .Name = "Brief" Then
            ' .PrintOut copies:=1
                If .Name = "Rechnung" Then
                    spstg = "C:\Tester\Rechnung\"
                Else
                    spstg = "C:\Tester\Brief\"
                End If
                   If MsgBox(Prompt:="Blatt """ & .Name & """ als PDF-Datei exportieren?", _
                      Buttons:=vbQuestion + vbYesNo, Title:="PDF-Datei erstellen") = vbYes Then
                        .ExportAsFixedFormat Type:=xlTypePDF, _
                        Filename:=spstg & ActiveSheet.Range("B4") _
                        & "_" & ActiveSheet.Range("B5").Text _
                        & "-" & Format(Now, "YYYY-MM-DD hh-mm-ss") & " PDF.pdf", _
                        Quality:=xlQualityStandard, IncludeDocProperties:=False, _
                        IgnorePrintAreas:=False, OpenAfterPublish:=True
              End If
            End If
            End With
        Next
      End Sub



  

Betrifft: AW: Code noch etwas anpassen von: Dirk
Geschrieben am: 23.01.2012 19:37:55

Ach un eh ich es vergesse bei

ArrDruck = Split("Rechnung, Rechnung_Kopie, Brief", ",")

dürfen keine Leerzeichen stehen
also
ArrDruck = Split("Rechnung,Rechnung_Kopie,Brief", ",")

sonnst trennt der die Stings in
"Rechnung" " Rechnung_Kopie" und " Brief"

da ich nicht davon ausgehe das du von dem Tabllennamen noch Leerzeichen gesetzt hast müssen die raus

solltest du doch mehrere Tabellenblätter in der Datei haben sag bescheid dann schau ich nochmal über den code genauer drüber

Gruß
Dirk


  

Betrifft: AW: So geht es nun :)) von: Thomas
Geschrieben am: 23.01.2012 20:32:01

Hallo Dirk,

ich hab es nun so zum laufen gebracht nach unzähligen umschreiben und testen. Wie gut das ich mein Drucker aus gemacht habe.

Dim ArrDruck() As String
Dim Spstg As String
Dim i As Integer
ArrDruck = Split("Rechnung,Rechnung_Kopie,Brief", ",")
For i = 0 To UBound(ArrDruck)
'For Each Worksheet In Worksheets <<<< hier bleibt er gleich hängen
'Wiht Worksheet
With ThisWorkbook.Sheets(ArrDruck(i))
.PrintOut copies:=1
If .Name = "Rechnung" Or .Name = "Brief" Then

If .Name = "Rechnung" Then
Spstg = "C:\Users\Das ist mein\Documents\Neue Aufgaben\PDF Dateien\"
Else
Spstg = "C:\Users\Das ist mein\Documents\Briefe an\"
End If


Ich Danke Dir 1000 mal für die Kurzform so kann ich mein Monstercode nun in die Tonne kloppen.

Gruß Thomas


  

Betrifft: AW: So geht es nun :)) von: Dirk
Geschrieben am: 23.01.2012 20:37:50

es freut mich wenn ich helfen konnte

Gruß
Dirk


Beiträge aus den Excel-Beispielen zum Thema "PDF von 2 Tabs Pfad verschieden"