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

PDF ohne Pfad speichern

PDF ohne Pfad speichern
07.03.2024 16:09:12
Kabis
Hallo Zusammen,

ich habe mir nachfolgenden Code eingebaut, möchte aber nur den Dateinamen auflisten. Der Code liefert Pfad\Dateiname.
Anstelle eines zweiten Codes mit dem Abschneiden sollte es doch bestimmt mit einer kleinen Änderung machbar sein, dass ich nur den Dateinamen aufliste.

'https://www.herber.de/forum/archiv/1248to1252/1251429_Alle_PDFs_aus_Ordner_und_Unterordner_auslesen.html

Private Declare Function OemToCharA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Public Function ASCIItoANSI(ByVal Text As String) As String
Call OemToCharA(Text, Text)
ASCIItoANSI = Text
End Function
Sub pdf_auflisten()
Dim objShell As Object, objExec As Object
Dim vntRet As Variant, strFolder As String, strTMP As String
strFolder = "C:\Dokumente\" 'anpassen
Set objShell = CreateObject("WScript.Shell")
ChDrive Left(strFolder, 1)
ChDir strFolder
Set objExec = objShell.Exec("cmd /c dir /s /b *.pdf")
strTMP = ASCIItoANSI(objExec.StdOut.ReadAll) 'Idee von Bernd (bst)
vntRet = Split(strTMP, vbCrLf)
If UBound(vntRet) > 0 Then Tabelle2.Range("A1").Resize(UBound(vntRet) + 1, 1) = Application.Transpose(vntRet)
Set objShell = Nothing
End Sub


Gruß Rainer

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PDF ohne Pfad speichern
07.03.2024 16:19:41
UweD
Hallo

verwende DIR()

Datei = DIR(DeinPfadmitDatei)

liefert den Dateinamen (mit ext), wenn die Datei auch dort liegt
oder LEER, wenn nicht da


    tt = "D:\Excel\temp\Mappe1.xlsx"

MsgBox Dir(tt)



LG UweD
AW: PDF ohne Pfad speichern
07.03.2024 16:24:00
Herbert Grom
Hallo Rainer,

probiers mal damit:

Sub DateilisteArray1Spaltig()

Dim vArr(1 To 1, 1 To 1)

Set objArr = CreateObject("scripting.dictionary")
Columns(1).Clear

Call OrdnerAuswahlDialog
sFileName = Dir$(sPfadName)

Do Until sFileName = vbNullString
iRow = iRow + 1
vArr(1, 1) = sFileName
objArr(iRow) = vArr
sFileName = Dir$
Loop
ActiveSheet.Cells(1, 1).Resize(objArr.Count, UBound(vArr, 2)) = Application.Transpose(Application.Transpose(objArr.items))
Set objArr = Nothing
MsgBox "fettich", vbInformation
End Sub


Servus
Anzeige
AW: PDF ohne Pfad speichern
07.03.2024 16:40:57
Rainer
Hallo Uwe, hallo Herbert,

zunächst vielen Dank für diese schnellen Antworten. Ich komme allerdings damit nicht klar. Vielleicht habe ich auch mein Wunschergebnis falsch erläutert.
Ich habe mit dem Code alle im Verzeichnis befindlichen Dateien in Tabelle2, Spalte A aufgelistet.

Allerdings ist der Eintrag folgender:
C:\Dokumente\Erstes_Dokument.pdf
C:\Dokumente\Zweites_Dokument.pdf
C:\Dokumente\Drittes_Dokument.pdf
...

Ich möchte aber nur:
Erstes_Dokument.pdf
Zweites_Dokument.pdf
Drittes_Dokument.pdf
...

in der Spalte stehen haben.
Gruß Rainer
Anzeige
AW: PDF ohne Pfad speichern
07.03.2024 18:36:42
Oppawinni
Ich kann es halt auch nicht lassen, ne Variante mit File System Object.
Über eine Funktion werden die Pfade erst in einer Collection gesammelt, ggf. auch aus Unterverzeichnissen.
Dort kann man dann mit den Pfaden anstellen was man will.
Gut, ist ein bisschen viel Überhang für diesen einfachen Fall der Ausgabe von Dateinamen.

Sub findMyPDFs()


Dim strFolder As String
Dim strExtension As String
Dim fso As Object
Dim colPaths As Collection
Dim wksOut As Worksheet
Dim lngOutCol As Long
Dim lngRowCount As Long
Dim path As Variant
' Dim objFileDialog As FileDialog


Set wksOut = Tabelle2
Set fso = CreateObject("Scripting.FileSystemObject")
lngOutCol = 1
lngRowCount = 2
strExtension = "pdf"

' Set objFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
' With objFileDialog
' .AllowMultiSelect = False
' .InitialFileName = Application.DefaultFilePath
' .InitialView = msoFileDialogViewSmallIcons
' .Title = "Bitte den Ordner auswählen"
' If .Show Then strFolder = .SelectedItems(1)
' End With
' Set objFileDialog = Nothing
' If strFolder = "" Then
' Exit Sub
' End If

strFolder = "C:\Documents\"

If Not fso.folderexists(strFolder) Then
MsgBox "Pfad " & vbCrLf & strFolder & vbCrLf & "nicht gefunden", vbOKOnly Or vbExclamation, "Ojee"
Exit Sub
End If

Set colPaths = findFilesInFolderByExt(strFolder, strExtension, false)

For Each path In colPaths
wksOut.Cells(lngRowCount, lngOutCol).Value = fso.getfile(path).Name
' wksOut.Cells(lngRowCount, lngOutCol).Value = path
lngRowCount = lngRowCount + 1
Next

End Sub

Private Function findFilesInFolderByExt(ByVal SourceFolderName As String, ByVal fileExtension As String, _
Optional includeSubfolders As Boolean = False) As Collection

'Erzeugt eine Collection mit Pfaden von Dateien der Erweiterung fileEtension ausgehend vom Pfad SourceFolderName
'für includeSubFolders = True erfolgt die Suche rekursiv, also auch in Unterordnern und deren Unterordnern,
'ausgenommen sind System und Hidden und Folders und natürlich auch Folder für die keine Leserechte bestehen.

Dim fso As Object, SourceFolder As Object, SubFolder As Object
Dim FileItem
Dim Result As New Collection
Dim i As Long, j As Long, x


Set fso = CreateObject("Scripting.FileSystemObject")

If fso.GetDrive(fso.GetDriveName(SourceFolderName)).path = SourceFolderName Then
Set SourceFolder = fso.GetDrive(fso.GetDriveName(SourceFolderName)).RootFolder
Else
Set SourceFolder = fso.GetFolder(SourceFolderName)
End If

'check for ReadAccess
On Error Resume Next
If Not (SourceFolder.Files.Count >= 0) Then
Exit Function
End If
On Error GoTo 0

For Each FileItem In SourceFolder.Files
If LCase(fso.GetExtensionName(FileItem.path)) = LCase(fileExtension) Then
Result.Add FileItem.path
End If
Next FileItem

DoEvents

If includeSubfolders Then
For Each SubFolder In SourceFolder.SubFolders
If Not ((SubFolder.Attributes And (vbSystem Or vbHidden)) > 0) Then
Dim SubResult As Collection
Set SubResult = findFilesInFolderByExt(SubFolder.path, fileExtension, True)
If SubResult.Count > 0 Then
For Each x In SubResult
Result.Add x
Next
End If
Set SubResult = Nothing
End If
Next SubFolder
End If

Set findFilesInFolderByExt = Result

End Function


Anzeige
AW: PDF ohne Pfad speichern
07.03.2024 19:40:41
Rainer
Hallo Oppawinni,

da ich mir die Threads in meinen Codes mit abspeichere kann diese umfassende Variante ja mal nicht schaden.

Vielen Dank auch Dir.

Gruß Rainer
AW: PDF ohne Pfad speichern
07.03.2024 16:51:09
Herbert Grom
Du hast recht, es hat noch etwas gefehlt:

Sub DateilisteArray1Spaltig()

Dim iRow%, sPfadName$, sFileName$, objArr As Object
Dim vArr(1 To 1, 1 To 1)

Set objArr = CreateObject("scripting.dictionary")
Columns(1).Clear

With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Ordnerauswahl"
.ButtonName = "Auswahl..."
.InitialView = msoFileDialogViewList
If .Show = -1 Then sPfadName = .SelectedItems(1) & "\"
End With

sFileName = Dir$(sPfadName)

Do Until sFileName = vbNullString
iRow = iRow + 1
vArr(1, 1) = sFileName
objArr(iRow) = vArr
sFileName = Dir$
Loop
ActiveSheet.Cells(1, 1).Resize(objArr.Count, UBound(vArr, 2)) = Application.Transpose(Application.Transpose(objArr.items))
Set objArr = Nothing
MsgBox "fettich", vbInformation
End Sub


Wenn du mein Makro startest erscheint ein Dialogfenster, in dem du den gewünschten Ordner auswählst, dessen Dateien dann aufgelistet werden.

Servus
Anzeige
AW: PDF ohne Pfad speichern
07.03.2024 17:10:21
Rainer
Hallo Herbert,

danke für die Lösung, super Idee mit dem Dialogfenster. Zeigt, wie viele Möglichkeiten es doch gibt.
Habe es mir in diesem Fall auf den feststehenden Pfad abgeändert. Klappt wie gewünscht.

Gruß Rainer
AW: Bitte sehr, gerne geschehen & danke f.d. Rückmeldung.owt
07.03.2024 17:18:14
Herbert Grom
,,,

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige