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

Dateien einlesen

Dateien einlesen
20.04.2009 07:58:05
erich
Hallo Excelprofis,
habe ein problem mit den untenstehenden Code (ist aus einen Anderen Forum) funktioniert abgeändert für Word 2007
was mache ich falsch dass dieser code für Excel 2007 läuft.
1. Fehler: nichtr alle dateien werden in das tabellenblatt eingelesen.
2. die meldung die kommt zeigt mehr dateien an als tatsächlich eingelesen worden sind.
bitte um eure hilfe, was ich ändern muss.
Beispiel Datei
https://www.herber.de/bbs/user/61300.xls

Sub Dateisuche()
Dim lngAkt As Long
Dim Pfad As String ' Suchordner
Dim Muster As String 'Suchmuster
Dim Dateiname As String
Dim Meldung As String
' Die Collection dient als Ergebnis, analog zur Foundfiles Auflistung
Dim Liste As New Collection
Cells.Select
Selection.ClearContents
Pfad = "O:\Lackiererei_w6\50_Produktion\100_TR_340\080_Methodiker\0804_Verwaltung_Methodik\ _
08042_Verwaltung_Schoierer\04201_Dichtheit\"
Cells(1, 2).Value = Pfad
Muster = msoFileTypeOfficeFiles
'Die Dir Funktion liefert die erste Datei im Suchordner als String
Dateiname = Dir$(Pfad)
Do While Len(Dateiname) > 0
'Die Instr Funktion vergleicht Dateiname mit Suchmuster
If InStr(1, Dateiname, Muster, vbTextCompare) > 0 Then
'Ausgabe ins Dokument
'Selection.TypeText Pfad & Dateiname & vbCrLf
For lngAkt = 1 To Liste.Count
Cells(lngAkt, 1) = Mid(Liste.Item(lngAkt), Len(Pfad) + 1)
Next lngAkt
'Hinzufügen der gefundenen Dateien zur Collection
Liste.Add (Pfad & Dateiname)
End If
'um weitere Dateinamen über die Dir Funktion zu erhalten, reicht ein erneuter aufruf ohne    _
_
_
Parameter
Dateiname = Dir$
Meldung = "Es wurden " & Liste.Count & _
" Dateien gefunden." & vbCrLf
Loop
If Liste.Count  0 Then
MsgBox Meldung, vbInformation, "Dateisuche"
End If
End Sub


mfg
Erich

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

Betreff
Datum
Anwender
Anzeige
AW: Dateien einlesen
20.04.2009 08:22:13
Armin
Guten morgen Erich,
der Code ist zum Teil in Excel 2007 nicht mehr lauffähig. MS hat einige Objekte aus VBA herausgenommen.
Ich liege doch richtig das die File in einem vorgegebenen Verzeichnis im UsfAUSB in der ComboBox angezeigt und ausgewählt werden sollen? Und was dann, soll es nur geöffnet werden? Das könnte man ja auch ohne Excel erreichen. Vielleicht teilst Du uns dazu noch was mit.
Gruß Armin
AW: Dateien einlesen
20.04.2009 08:52:49
erich
Hallo Armin,
die userform ist ein teil einer Grossen dateien offnen datenbank (direcktzugriff) dadurch weden den Anwender gezielt die dateien zuverfügung gestellt die er zum Arbeiten braucht ohne lane im Explorer zu suchen.
kannst du mir bei den Code helfen das er unter office 2007 läuft?
gruß
erich
Anzeige
AW: Dateien einlesen
20.04.2009 09:00:24
Armin
Hallo Erich,
ja kann ich habe heute leider wenig Zeit. Wenn es bis morgen warten kann gern.
Übrigens meine E-Mail Adresse findest Du oben unter Forums-Seiten - Profilliste.
Gruß Armin
AW: Dateien einlesen
20.04.2009 09:09:04
erich
Hallo Arnin,
danke das du dich meinen problem annimmst, selbstverständlich kann ich bis morgen warten
danke nochmals
meine direcke e-mailadresse maile ich dir
gruß
Erich
AW: Dateien einlesen
20.04.2009 11:30:07
Rainer
Der folgende Code könnte Dir vllt weiter helfen.

Public Function InhaltEinlesen(ByVal rufPfad As String, ByVal rufJob As String) As Integer
Dim fso As Object
Dim fVerz As Object
Dim fDatei As Object
Dim fDateien As Object
Dim Z As Integer
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set fVerz = fso.GetFolder(rufPfad)
Set fDateien = fVerz.Files
For Each fDatei In fDateien
' Fehlerhafte oder nicht korrekte Dateien/Verzeichnis abfangen
If fDatei = "" Then GoTo KeinVerzeichnis ' wenn fDatei leer dann Fehlermedlung und dabei  _
Workbook aktivieren
If InStr(fDatei, "\") = 0 Or InStr(fDatei, ".") = 0 Then GoTo KeineGültigeDatei ' ohne "\"  _
oder "." stimmt was nicht mit der Datei
Select Case rufJob
Case 1
MsgBox "Datei " & fDatei & " gefunden!"
End Select
Z = Z + 1
NächsteDatei:
Next fDatei
MsgBox "Es wurden gesamt " & Z & " Dateien gefunden!"
InhaltEinlesen = 1
Exit Function
KeineGültigeDatei:
MsgBox "Fehler 49! Im Ordner befindet sich eine ungültige Datei!", vbCritical
GoTo NächsteDatei
KeinVerzeichnis:
MsgBox "Fehler 48! Das Verzeichnis ist leer!"
InhaltEinlesen = 48
Exit Function
End Function


Sub Inhalteinlesenaufrufen()
Dim Pfad As String
Dim Fehler As String
Pfad = "C:\Test\" ' Als Beispiel, hier den Pfad rein den Du durchsuchen willst
If InhaltEinlesen(Pfad, 1) > 1 Then
Goto Fehlerbehandlung
End If
Exit Sub
Fehlerbehandlung:
End Sub


Ist jetzt extrem stark zusammen gekürzt und ein paar Sachen sind speziell so gemacht, dass Sie zum Rest von meinem Code passen. Aber dieser gekürzte Teil sollte Dein Problem mit dem Einlesen der Dateien lösen.
Allerdings die Verarbeitung was Du mit den Dateien machst wenn Du sie gefunden hast, musst Du da noch einfügen. Da meine Weiterverarbeitung wohl deutlich anders ist als Du es Dir vorstellst. Deswegen habe ich an der Stelle die Passage mit der MsgBox die die gefundene Datei ausgibt eingebaut.
Beim Auruf der Function wird zum durchsuchende Pfad noch ein Parameter übergeben, anhand dessen per Select Case die Function auswählt wie die gefundene Datei zu verarbeiten ist. Wenn alles abgearbeitet, dann kannst Du in der aufrufenden Sub je nach Rückgabe der Function auch noch auswählen was dann weiter geschehen soll. In dem Bereich Fehlerbehandlung kannst Du dann wieder per Select Case eben die Aktion auswählen die bei einer Meldung > 1 passieren soll.
Gruß
Rainer

Anzeige
AW: Dateien einlesen
20.04.2009 11:34:48
Rainer
Oops ... zuviel gekürzt, bzw. zu schnell gearbeitet. ^^
Die aufrufende

Sub muß natürlich so aussehen:


Sub Inhalteinlesenaufrufen()
Dim Pfad As String
Dim Fehler As String
Pfad = "C:\Test\" ' Als Beispiel, hier den Pfad rein den Du durchsuchen willst
Fehler = InaltEinlesen(Pfad, 1)
If Fehler > 1 Then
Goto Fehlerbehandlung
End If
Exit Sub
Fehlerbehandlung:
Select Case Fehler
Case 48
' mach irgendwas
End Select
End Sub


Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige