Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1900to1904
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
VBA Datei einlesen
03.10.2022 15:40:03
Jörg
Hallo an allle,
ich habe von Excel Vba nur ein bischen Ahnung. Deshalb stelle ich hier meine Frage.
Diesen VBA Cod habe ich aus dem Internet. Er könnte auch aus diesem Forum stammen. Er macht fast genau das was ich benötige. Er liest mir sämtliche Dateien aus den Ordner die ich angebe aus, und macht einen Link auf die Datei.
Ich möchte aber nur die Dateien aus lesen, die in der Datei einen Bestimmten Text stehen hat.
Und zwar enden meine Dateien immer mit ( N.i.O.pdf oder mit i.O.pdf ) Es sind Messprotokolle. Nun möchte ich nur die N.i.O.pdf Dateien in eine Excelmappe kopieren,
Doch da Beiße ich mir die Zähne aus. Jetzt zu meiner Frage. Kann mir das jemand in den Bestehenden VBA Code einfügen. Vielleicht ein kleine Erklärung dazu.
Bedanke mich schon mal im Voraus
Gruß Jörg

Option Explicit
Sub DateienMitHyperlinkAuflisten()
'##### Hauptordner bearbeiten #####
Dim FileSystem As Object
Dim Unterordner As Object
Dim Datei As Object
Dim Zeile As Long
Dim Spalte As Long
Dim Ordner As Variant
Dim Ordner1 As Variant
Range("A1:E1000").Clear
Set FileSystem = CreateObject("Scripting.FileSystemObject")
Spalte = 2
Zeile = 1
Ordner = "C:\Users\Ghost_One\Desktop\Protokolle\07_Juli" ' "R:\CAD_Signatur"
If FileSystem.FolderExists(Ordner) Then
Set Ordner = FileSystem.Getfolder(Ordner)
Set Ordner1 = Unterordner
With ActiveSheet.Cells(1, 1)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Value = "Maschinen Nr:"
.Font.Bold = True
.Font.Size = 15
.Interior.Color = RGB(225, 225, 100)
End With
With ActiveSheet.Cells(1, 2)
.Value = Ordner
.Font.Bold = True
.Font.Size = 15
.Interior.Color = RGB(220, 220, 220)
End With
For Each Datei In Ordner.Files
Zeile = Zeile + 1
' ActiveSheet.Cells(Zeile, Spalte).Value = Datei.Name
ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(Zeile, Spalte), _
Address:=Datei.Path, TextToDisplay:=Datei.Name
Next
ListOrdner Ordner, Zeile, 1
End If
End Sub
Sub ListOrdner(Ordner, Zeile, Spalte)
'##### Unterordner bearbeiten #####
Dim FileSystem As Object
Dim Unterordner
Dim Datei
Set FileSystem = CreateObject("Scripting.FileSystemObject")
If FileSystem.FolderExists(Ordner) Then
Set Ordner = FileSystem.Getfolder(Ordner)
For Each Unterordner In Ordner.Subfolders
Zeile = Zeile + 1
With ActiveSheet.Cells(Zeile, Spalte)
'.HorizontalAlignment = xlCenter
'.VerticalAlignment = xlCenter
.Value = Unterordner.Name
.Font.Bold = True
.Font.Size = 15
.Interior.Color = RGB(220, 220, 220)
End With
For Each Datei In Unterordner.Files
Zeile = Zeile + 1
'  ActiveSheet.Cells(Zeile, Spalte).Value = Datei.Name  ' Nur der Datei Name als Link wenn Aktiviert
ActiveSheet.Hyperlinks.Add ActiveSheet.Cells(Zeile, Spalte), Datei
Next
ListOrdner Unterordner, Zeile, Spalte + 1
Next
End If
ActiveSheet.UsedRange.EntireColumn.AutoFit
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Datei einlesen
03.10.2022 16:24:59
Nepumuk
Hallo Jörg,
schreib in die zweite Zeile des Moduls (direkt unter "Option Explicit"): Option Compare Text
Damit wird Groß- Kleinschreibung ignoriert. Dann ergänze das erste Makro so:

        For Each Datei In Ordner.Files
If Datei Like "*N.i.O.pdf" Then
Zeile = Zeile + 1
' ActiveSheet.Cells(Zeile, Spalte).Value = Datei.Name
ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(Zeile, Spalte), _
Address:=Datei.Path, TextToDisplay:=Datei.Name
End If
Next
Gruß
Nepumuk
AW: VBA Datei einlesen
03.10.2022 18:12:24
Jörg
Hallo Nepumuk,
habe deinen Code Teil in den CODE den ich habe eingefügt, doch leider hat sich nichts geändert.
Siehe Anhang
Hoff ich habe dich richtig verstanden
Gruß Jörg

Option Explicit
Sub DateienMitHyperlinkAuflisten()
'##### Hauptordner bearbeiten #####
Dim FileSystem As Object
Dim Unterordner As Object
Dim Datei As Object
Dim Zeile As Long
Dim Spalte As Long
Dim Ordner As Variant
Dim Ordner1 As Variant
Range("A1:E1000").Clear
Set FileSystem = CreateObject("Scripting.FileSystemObject")
Spalte = 2
Zeile = 1
Ordner = "C:\Users\Ghost_One\Desktop\Protokolle\07_Juli" ' "R:\CAD_Signatur"
If FileSystem.FolderExists(Ordner) Then
Set Ordner = FileSystem.Getfolder(Ordner)
Set Ordner1 = Unterordner
With ActiveSheet.Cells(1, 1)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Value = "Maschinen Nr:"
.Font.Bold = True
.Font.Size = 15
.Interior.Color = RGB(225, 225, 100)
End With
With ActiveSheet.Cells(1, 2)
.Value = Ordner
.Font.Bold = True
.Font.Size = 15
.Interior.Color = RGB(220, 220, 220)
End With
For Each Datei In Ordner.Files
If Datei Like "*N.i.O.pdf" Then
Zeile = Zeile + 1
' ActiveSheet.Cells(Zeile, Spalte).Value = Datei.Name
ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(Zeile, Spalte), _
Address:=Datei.Path, TextToDisplay:=Datei.Name
End If
Next
ListOrdner Ordner, Zeile, 1
End If
End Sub
Sub ListOrdner(Ordner, Zeile, Spalte)
'##### Unterordner bearbeiten #####
Dim FileSystem As Object
Dim Unterordner
Dim Datei
Set FileSystem = CreateObject("Scripting.FileSystemObject")
If FileSystem.FolderExists(Ordner) Then
Set Ordner = FileSystem.Getfolder(Ordner)
For Each Unterordner In Ordner.Subfolders
Zeile = Zeile + 1
With ActiveSheet.Cells(Zeile, Spalte)
'.HorizontalAlignment = xlCenter
'.VerticalAlignment = xlCenter
.Value = Unterordner.Name
.Font.Bold = True
.Font.Size = 15
.Interior.Color = RGB(220, 220, 220)
End With
For Each Datei In Unterordner.Files
Zeile = Zeile + 1
'  ActiveSheet.Cells(Zeile, Spalte).Value = Datei.Name  ' Nur der Datei Name als Link wenn Aktiviert
ActiveSheet.Hyperlinks.Add ActiveSheet.Cells(Zeile, Spalte), Datei
Next
ListOrdner Unterordner, Zeile, Spalte + 1
Next
End If
ActiveSheet.UsedRange.EntireColumn.AutoFit
End Sub

Anzeige
AW: VBA Datei einlesen
03.10.2022 18:19:58
Jörg
Hallo Nepumuk,
habe den Fehler gefunden. Ich muss deiene teil des Codes in beide Module einfügen, dann funktioniert es wie es soll.
Danke noch mal dafür
Gruß Jörg
AW: VBA Datei einlesen
03.10.2022 18:21:41
Jörg
Für alle die sowas vielleicht auch mal brauchen.
Hier noch mal der ganze Code.

Option Explicit
Sub DateienMitHyperlinkAuflisten()
'##### Hauptordner bearbeiten #####
Dim FileSystem As Object
Dim Unterordner As Object
Dim Datei As Object
Dim Zeile As Long
Dim Spalte As Long
Dim Ordner As Variant
Dim Ordner1 As Variant
Range("A1:E1000").Clear
Set FileSystem = CreateObject("Scripting.FileSystemObject")
Spalte = 2
Zeile = 1
Ordner = "C:\Users\Ghost_One\Desktop\Protokolle\07_Juli" ' "R:\CAD_Signatur"
If FileSystem.FolderExists(Ordner) Then
Set Ordner = FileSystem.Getfolder(Ordner)
Set Ordner1 = Unterordner
With ActiveSheet.Cells(1, 1)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Value = "Maschinen Nr:"
.Font.Bold = True
.Font.Size = 15
.Interior.Color = RGB(225, 225, 100)
End With
With ActiveSheet.Cells(1, 2)
.Value = Ordner
.Font.Bold = True
.Font.Size = 15
.Interior.Color = RGB(220, 220, 220)
End With
For Each Datei In Ordner.Files
If Datei Like "*N.i.O.pdf" Then
Zeile = Zeile + 1
' ActiveSheet.Cells(Zeile, Spalte).Value = Datei.Name
ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(Zeile, Spalte), _
Address:=Datei.Path, TextToDisplay:=Datei.Name
End If
Next
ListOrdner Ordner, Zeile, 1
End If
End Sub
Sub ListOrdner(Ordner, Zeile, Spalte)
'##### Unterordner bearbeiten #####
Dim FileSystem As Object
Dim Unterordner
Dim Datei
Set FileSystem = CreateObject("Scripting.FileSystemObject")
If FileSystem.FolderExists(Ordner) Then
Set Ordner = FileSystem.Getfolder(Ordner)
For Each Unterordner In Ordner.Subfolders
Zeile = Zeile + 1
With ActiveSheet.Cells(Zeile, Spalte)
'.HorizontalAlignment = xlCenter
'.VerticalAlignment = xlCenter
.Value = Unterordner.Name
.Font.Bold = True
.Font.Size = 15
.Interior.Color = RGB(220, 220, 220)
End With
For Each Datei In Unterordner.Files
If Datei Like "*N.i.O.pdf" Then
Zeile = Zeile + 1
'  ActiveSheet.Cells(Zeile, Spalte).Value = Datei.Name  ' Nur der Datei Name als Link wenn Aktiviert
ActiveSheet.Hyperlinks.Add ActiveSheet.Cells(Zeile, Spalte), Datei
End If
Next
ListOrdner Unterordner, Zeile, Spalte + 1
Next
End If
ActiveSheet.UsedRange.EntireColumn.AutoFit
End Sub

Anzeige
AW: VBA Datei einlesen
04.10.2022 06:59:00
Luschi
Hallo Jörg,
Zitat:

Ich möchte aber nur die Dateien aus lesen, die in der Datei einen Bestimmten Text stehen hat.
Und zwar enden meine Dateien immer mit ( N.i.O.pdf oder mit i.O.pdf )
Es sind Messprotokolle. Nun möchte ich nur die N.i.O.pdf Dateien in eine Excelmappe kopieren,
Von dieser Forderung sehe ich aber im zuletzt geposteten Code keine Vorgabe erfüllt. Bei mir werden aus allen Unterordnern ab einem Vorgabeordner alle Dateien als Hyperlink in dem Excelblatt aufgelistet.
Fazit: Hyperlink-Liste erstellt aber Ziel nicht erreicht.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: VBA Datei einlesen
06.10.2022 08:00:24
Jörg
Hallo Luschi,
sorry das ich mich erst jetzt melde. Also bei mir macht der Code soweit was er soll. Er liest mir aus dem vorgegebenen Ordner und darin alle Unterordner die N.i.O.pdf Dateien aus. Damit war ich schon mal zufrieden. Ich wollte nicht gleich mehrere Fragen auf einmal stellen. Wenn Du mir aber helfen kannst,
das ich den Ordnerpfad frei wählen kann, dann bin ich Dir schon im Voraus Dankbar.
Hoffe ich habe dich richtig verstanden.
Gruß Jörg

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige