Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1636to1640
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

Dateiname in ZIP-file auslesen

Dateiname in ZIP-file auslesen
03.08.2018 11:49:47
Werner
Hallo Excel-Freunde,
wir haben auf einem Sharepoint eine ZIP-Datei.
Darin enthalten sind viele einzelne Dateien (pdf und xls)
Gibt es eine Möglichkeit, diese Dateinamen
in eine Excel-Datei "einzulesen" ?
Freu mich auf einen Tipp
Gruß
Werner

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ja, aber ...
03.08.2018 12:12:03
Fennek
Hallo,
ja, das geht, aber mit (vermutlich) undokumentierten Befehlen.
Google nach "Excel VBA Ronderuin unzip"
mfg
AW: ja, aber ... Excel VBA Ronderuin unzip
03.08.2018 14:50:00
Werner
Hallo Fennek
Danke für den Tipp
auf den ersten Blick:
... geht es wohl hauptsächlich um das unzippen der Dateien.
Ich benötige jedoch die Namen der einzelnen Dateien einer zip
Habe jedoch noch nicht alle Seiten "durchgescreent" :)
Besten Gruß
Werner
AW: Dateiname in ZIP-file auslesen
03.08.2018 14:11:09
Karl-heinz
Hallo Werner,
solltest Du nicht fündig werden oder nicht weiterkommst, melde Dich hier noch mal:
Ich habe mir vor Jahren mal was zusammengestellt, womit aus einer ZIP-Datei alle möglichen Komponenten wie Dateiname, Datum, Größe, Pfad usw. ausgelesen werden können, und zwar ohne vorherigen Extract. Rein mit VBA.
Müsste ich aber erst rauskramen und für Deine Bedürfnisse anpassen...
viele Grüße
Karl-Heinz
Anzeige
AW: Dateiname in ZIP-file auslesen
03.08.2018 14:54:10
Werner
Hallo Karl-Heinz
ja, genau soooo etwas benötige ich. :)
Wäre natürlich cool, wenn Du auf die Suche bei Dir gehst
Bislang habe ich auf den Seiten von Ronderuin (der andere Tipp)
noch nichts gefunden.
Bis dahin:
nice weekend :)
Besten Gruß
Werner
AW: 1. Treffer
03.08.2018 15:04:18
Fennek

https://www.rondebruin.nl/win/s7/win002.htm

AW: 1. Treffer
03.08.2018 15:15:11
Werner
Hey Fennek,
ja, diese Seite habe ich auch gefunden.
Dort entpackt der Code die ZIP-Dateien in ein separates Verzeichnis.
Ich benötige jedoch nur die "ausgelesenen Dateinamen'
in meinem aktuelle Sheet.
Dank Dir sehr :)
Besten Gruß
Stefan
Anzeige
AW: Dateiname in ZIP-file auslesen
03.08.2018 16:12:08
Karl-heinz
Hallo Werner,
hier ein stark 'zusammengedampfter' Code zum Extrahieren der Dateinamen. Habe ich mal in String zurückgeben lassen. Man kann das ja ausgeben, wie immer man will.
Meine Vollversion ermittelt natürlich auch alle anderen Parameter wie Datum, Suffix, Größen usw., aber Du wolltest ja nur die Dateinamen.
Probiere es einfach mal aus. Bei mir läuft's.
Viele Grüße
Karl-Heinz
Sub Starte()
Dim Data() As String, i As Integer
Data = Split(Zip_Dateinamen(ThisWorkbook.Path & "\" & "Interactiver Vergleich_Office 2003 to  _
2007.zip"), vbCrLf)
Cells.Clear
For i = 0 To UBound(Data)
Cells(i + 1, "A").Value = Data(i)
Next i
End Sub

Function Zip_Dateinamen(Datei As String) As String
'Funktion untersucht eine Zipdatei und ermittelt die enthaltenen Dateien
Dim Data As String, Dateilaenge As Integer, Zeiger As Long, Packed As Long
If Dir$(Datei)  "" Then
Close #1: Open Datei For Binary As #1
'Feststellen, ob der Inhalt einer gültigen Zipdatei entspricht; nicht nur die Extension muss  _
stimmen
If Input(4, #1)  "PK" & Chr$(3) & Chr$(4) Then
MsgBox "Die Datei '" & Datei & "' ist keine Zip-Datei!", vbOKOnly, "Zipinhalt-Ermittlung" _
Close #1: Exit Function
End If
Seek #1, 1
'Einlesen der einzelnen Dateiabschnitte bis zum Inhaltsverzeichnis
Zeiger = 1
Do While Not EOF(1)
Seek #1, Zeiger + 18
Packed = HoleWert(Input(4, #1))                 'Länge des komprimierten Datenbereichs
Seek #1, Zeiger + 26
'Den Zeiger um 30 plus Dateitextlänge plus Offset weitersetzen (Offset für Dateilänge=0  _
gebraucht)
Zeiger = Zeiger + 30 + HoleWert(Input(2, #1)) + HoleWert(Input(2, #1))
Seek #1, Zeiger
If Input(2, #1)  "PK" Then Zeiger = Zeiger + Packed 'Bei eingebundener ZipDatei ist  _
kein Datenbody vorhanden
Seek #1, Zeiger
If Input(4, #1) = "PK" & Chr$(1) & Chr$(2) Then Exit Do
Loop
'Einlesen des Inhaltsverzeichnis
Seek #1, Zeiger
Do While Not EOF(1)
Select Case Input(4, #1)                      'vierstellige PK/UT-Kennung lesen
Case "PK" & Chr$(1) & Chr$(2)
'FirstBlock 8,Uhrzeit 2,Datum 2,Binärblock 4,PackedSize 4,OriginalSize 4 =24 Byte lesen
Data = Input(24, #1)
Dateilaenge = Val(HoleWert(Input(2, #1)))    'Dateilänge
Data = Input(16, #1)                         'weiterer unbekannter Binärblock
'Dateinamen und optionalen Pfad ermitteln
Zip_Dateinamen = Zip_Dateinamen & Input(Dateilaenge, #1) & vbCrLf
Case "PK" & Chr$(5) & Chr$(6)
Data = Input(16, #1)                       'Mindestbyteanzahl lesen
Do
Data = Input(1, #1)
If EOF(1) Or Data = "P" Then Exit Do
Loop
If EOF(1) Then Exit Do
Seek #1, Seek(1) - 1                       'Zeiger wieder vor das "P" setzen
Case "UT" & Chr$(5) & Chr$(0)
Data = Input(9, #1)
Case Else
Do
Data = Input(1, #1)
If EOF(1) Or Data = "P" Then Exit Do
Loop
If EOF(1) Then Exit Do
Seek #1, Seek(1) - 1                       'Zeiger wieder vor das "P" setzen
End Select
Loop
Close #1
Else
MsgBox "Die Datei '" & Datei & "' wurde nicht gefunden!", vbOKOnly, "Zipinhalt-Ermittlung"
End If
End Function

Function HoleWert(S As String) As String
'Funktion wandelt einen String in eine Zahl um
Dim i As Integer, D
For i = 1 To Len(S)
D = D + Asc(Mid(S, i, 1)) * 256 ^ (i - 1)
Next
HoleWert = D
End Function

Anzeige
AW: Beispiel
03.08.2018 16:29:37
Karl-heinz
Hallo Fennek,
kurz und bündig, sieht gut aus. Funktioniert aber nicht bei mir.
Error 91..... WITH nicht festgelegt.
Fehlt vielleicht Bibliothek/Verweis?
viele Grüße
Karl-Heinz
Anzeige
AW: existiert die Datei?
03.08.2018 16:37:24
Fennek
Hallo,
nein, es braucht keinen Verweis.
Aber der Pfad "Pf" und die zip-Datei "f" muss existieren.
mfg
(dein Code sieht toll aus, ist aber recht kompliziert)
AW: existiert die Datei?
03.08.2018 16:47:59
Karl-heinz
Hi Fennek,
Pfad und Datei existieren natürlich. Habe die gleiche genommen, wie bei mir eben.
Naja, ich sagte ja, der Code ist schon älter, genau wie ich. :-)
Da muss man auch genau wissen, wie so eine ZIP-Datei aufgebaut ist. Früher gab's halt nix anderes oder war mir nicht bekannt.
VG KH
AW: xl 2016 auf Win 8.1
03.08.2018 16:56:02
Fennek
es sollte aber auch ab XP gehen (genau weis ich es nicht)
AW: xl 2016 auf Win 8.1
03.08.2018 17:19:32
Karl-heinz
OK,
jetzt läuft es doch (keine Ahnung, was da eben war) und erfreulicherweise (hab rumgespielt) werden ja auch Größe, Pfad und mal sehen, was noch so rausgegeben.
Ist doch 'ne gute Sache. Danke für den Tipp.
Lediglich bei meiner ersten ZIP, da wurde ein Ordner eingezippt, gibt er nur den Ordnernamen und nicht die darin enthaltenen Einzeldateien zurück, im Gegensatz zu meinem Code.
VG KH
Anzeige

10 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige