Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1768to1772
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

Alle Arbeitsblätter einer Mappe

Alle Arbeitsblätter einer Mappe
01.07.2020 14:03:43
Dörte
Hallo,
ich benötige bitte eure Hilfe - bin am verzweifeln.
Es geht darum, alle Blätter bis auf eins (den Master) einer Mappe einzeln unter individuellem Dateinamen (in jedem Blatt in Zelle I2) unter einem bestimmten Pfad (in jedem Blatt in Zelle I1) als pdf zu speichern.
Sollte der angegebene Order noch nicht existieren, soll das Makro diesen auch anlegen.
Bis jetzt bin ich soweit gekommen:
Sub PrintAndSavePdf()
Dim strFileName As String
Dim strPath As String
Dim ws As Worksheet
strFileName = Range("I2") & ".pdf"
strPath = Range("I1")
For Each ws In ActiveWindow.SelectedSheets
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strPath & strFileName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Next ws
End Sub
Das funktioniert leider nicht, ich bekomme die Fehlermeldung, dass etwas mit dem Datei-Export nicht klappt.
Alternativ habe ich den folgenden Code:
Sub PrintAndSavePdf()
Dim strFileName As String
Dim strPath As String
strFileName = Range("I2") & ".pdf"
strPath = Range("I1")
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strPath & strFileName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Call Recall
End Sub

Sub Recall()
PrintAndSavePdf
End Sub
Der funktioniert, was den Dateiexport unter angegebenem Pfad angeht, ackert sich aber nur an dem aktiven Arbeitsblatt ab und erstellt keinen Ordner, wenn der noch nicht existiert.
Kann mir bitte jemand helfen?
Vielen Dank!
Viele Grüße
Dörte

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 14:09:20
UweD
Hallo
ist in I1 bereits ein abschließender \ enthalten?
sonst so
strPath = Range("I1") & "\"
LG UweD
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 14:42:54
Dörte
Hallo UweD,
ja, die Pfade schließen alle mit \ ab.
Ich habe mir auch nochmal das Arbeitsblatt angesehen, wo das Makro hakt, aber ich kan keinen Fehler feststellen.
Vielen Dank!
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 14:13:26
Werner
Inhaltsverzeichnis einer Datei erstellen
Wie kann man ein Inhaltsverzeichnis einer Arbeitsmappe und Tabellenblätter
erstellen und mit Hyperlinks versehen ?
1. Lösung ohne VBA
Markiere eine beliebige Zelle Deiner Tabelle.
In der Menüleiste wähle Einfügen – Namen definieren.
Als Name wähle nun z.B. "Inhaltsverzeichnis" und in das Eingabefeld "bezieht sich auf"
schreibst Du nachstehende Formel
=ARBEITSMAPPE.ZUORDNEN(1+0*JETZT())
Bestätige das mit OK
Jetzt schreibe in deinem Übersichtsblatt in irgendeine Zelle diese Formel und kopiere sie
beliebig oft nach unten:
=WENN(ZEILE(A1)>ANZAHL2(x);"";HYPERLINK("#'"&INDEX(x;ZEILE(A1))&"'!A1";TEIL(INDEX(x;ZEILE(A1)); FINDEN("]";INDEX(x;ZEILE(A1)))+1;31)))
Im Ergebnis hast Du nun alle Blätter aufgelistet und sie sind gleichzeitig 'verlinkt'.
2. Lösung mit VBA
Dieses Makro erstellt ein neues Blatt und listet alle
vorhandenen Tabellen und 'hyperlinkt' sie !
Makro-Code:
Sub TabInhaltZusammen()
Dim Tabelle As Worksheet
Dim i As Integer
Worksheets.Add.Move before:=Worksheets(1)
ActiveSheet.Name = "Inhalt"
Cells(2, 2).Value = "Enthaltene Blätter"
i = 3
For Each Tabelle In ActiveWorkbook.Worksheets
If Tabelle.Name  "Inhalt" Then
Cells(i, 2).Value = Tabelle.Name
Tabelle.Hyperlinks.Add Anchor:=Cells(i, 2),_
Address:="", SubAddress:=Tabelle.Name & _
"!A1", ScreenTip:="Hyperlink klicken", _
TextToDisplay:=Tabelle.Name
i = i + 1
End If
Next Tabelle
End 

Sub
Q: Inet genau nicht mehr bekannt / Thomas Ramel ?

Anzeige
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 14:29:30
Dörte
Hallo Werner,
danke für deine Antwort, aber mir geht es nicht darum einen Index zu erstellen.
Oder benötige ich den, um mein Ziel zu erreichen?
Viele Grüße
Dörte
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 14:15:10
peterk
Hallo
Sollte wohl so gehen (ungetestet)

Sub PrintAndSavePdf()
Dim strFileName As String
Dim strPath As String
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.Name  "Master" Then
strFileName = ws.Range("I2") & ".pdf"
strPath = ws.Range("I1")
If Dir(strPath, vbDirectory) = "" Then
MkDir (strPath)
End If
ws.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strPath & strFileName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End If
Next ws
End Sub

Anzeige
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 14:38:32
Dörte
Hallo PeterK,
vielen Dank.
Das funktioniert teilweise:
Es werden die Dateien von vorn beginnend unter den angegebenen Pfaden und den gewünschten Namen gespeichert, aber das Makro stoppt, sobald der Order nicht existiert.
Kannst du da bitte nochmal gucken?
Vielen Dank!
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 14:47:25
peterk
Hallo
2 Fragen:

a) Hast Du "If ws.Name  "Master" Then" entsprechend dem Namen Deines Master-Blattes angepasst? _
b) Fehlt bei Deinem Pfad nur das letzet Subdirectory z.b, Pfad C:\we\sd\gh\hj\ es fehlt nur \hj  _
oder kann das auch tiefer gehen, d.h es müssen im schlimmsten Fall alle Directories des Pfads angelegt werden.
)
Anzeige
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 14:59:54
Dörte
Hallo Peter,
mein Master heißt einfach Master ;)
Zu den Pfaden, ja, es kann seinn, dass auch eine Reihe von Unterordnern angelegt werden muss.
Das könnte der Knackpunkt sein, oder?
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 15:22:22
peterk
Hallo
Nächster Versuch

Sub PrintAndSavePdf()
Dim strFileName As String
Dim strPath As String
Dim ws As Worksheet
Dim strPathSplit As Variant
Dim myTempPath As String
For Each ws In ActiveWorkbook.Worksheets
If ws.Name  "Master" Then
strFileName = ws.Range("I2") & ".pdf"
strPath = ws.Range("I1")
myTempPath = ""
If Dir(strPath, vbDirectory) = "" Then
strPathSplit = Split(strPath, "\")
For i = 0 To UBound(strPathSplit)
myTempPath = myTempPath & strPathSplit(i) & "\"
If Dir(myTempPath, vbDirectory) = "" Then
MkDir (myTempPath)
End If
Next i
End If
ws.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strPath & strFileName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End If
Next ws
End Sub

Anzeige
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 15:53:57
Dörte
Hallo Peter,
das funktioniert schon besser, aber das Makro stoppt an einer Stelle.
Fehlermeldung: Bad file name or number. Run time error 52
Ich konnte im Dokument keinen Fehler finden.
Vielen Dank!
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 15:58:02
peterk
Hallo
Hast Du in Deine Path/Name Variablen Sonderzeichen? Kannst Du mir Pfad/Name des bettroffen Blattes schicken?
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 16:02:44
Dörte
Hallo Peter,
der Zielordner soll auf dem Server sein, was bei allen anderen gut funktionierte.
Die Struktur verzweigt sich nach Fruchtsorte und ab da weiter ins Detail.
In dem Fall \\192.168.50.3\Data\Product Specificaties\Pomegranate\Sales\Organic\NFC\
File-Name: 2020 ORG-AS-NC-POMEGRANATE-JC.1 - Organic certified aseptic NFC Pomegranate Juice cloudy
Anzeige
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 16:22:05
peterk
Hallo
Hat das Makro schon Verzeichnisse angelegt?
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 16:28:43
Dörte
Hallo Peter,
nein, hat es nicht, habe ich nun manuell erstellt
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 16:47:14
peterk
Hallo
Wenn alle Pfadangaben am server liegen:
Diesen Teil

If Dir(strPath, vbDirectory) = "" Then
strPathSplit = Split(strPath, "\")
For i = 0 To UBound(strPathSplit)
myTempPath = myTempPath & strPathSplit(i) & "\"
If Dir(myTempPath, vbDirectory) = "" Then
MkDir (myTempPath)
End If
Next i
End If
Durch diesen ersetzen

If Dir(strPath, vbDirectory) = "" Then
strPathSplit = Split(strPath, "\\")
If UBound(strPathSplit) > 0 Then
myTempPath = "\\"
strPathSplit = Split(strPathSplit(1), "\")
End If
myTempPath = myTempPath & strPathSplit(0) & "\"
For i = 1 To UBound(strPathSplit)
myTempPath = myTempPath & strPathSplit(i) & "\"
If Dir(myTempPath, vbDirectory) = "" Then
MkDir (myTempPath)
End If
Next i
End If

Anzeige
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 16:57:43
Dörte
Super! Ist ohne Fehlermeldung durchgelaufen :)
Vielen lieben Dank für deine tolle Hilfe!!!
Viele Grüße
Dörte
AW: Alle Arbeitsblätter einer Mappe
01.07.2020 16:58:33
Dörte
Lieben Dank an den/ die Helfer :)
Verdankt & geschlossen (owT)
01.07.2020 17:14:20
EtoPHG

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige