1.3k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo
Ich habe viele Excel-Dateien (Dateiname beinhaltet Datum) in einem Ordner.
Den Wert, den ich bräuchte steht allerdings immer in einer anderen Zeile, aber immer in der gleichen Spalte, kann man diesen Wert von jeder Datei irgendwie raus lesen und dann in eine separate Datei speichern in Verbindung mit dem Dateinamen ?
Gruß

17 Antworten

0 Punkte
Beantwortet von
Hallo Community .-)

ops ... korrigiert

Gruß Nighty

Sub DateienLesen()
Call EventsOff
Dim Suche As Object
Dim DateiName As String, WksName As String, Dpfad As String, Deindung As String
Dim Lzeile As Long
Dpfad = CreateObject("Shell.Application").BrowseForFolder(0, "Ordner auswählen", &H1000, 17).items().Item().Path & "\"
Deindung = "*.xls"
WksName = "Tabelle1"
DateiName = Dir(Dpfad & Deindung)
Do While DateiName <> ""
If ThisWorkbook.Name <> DateiName Then
Workbooks.Open Filename:=Dpfad & DateiName
If SheetExists("" & WksName) = True Then
Set Suche = Worksheets("" & WksName).Range("A2:A" & Worksheets("" & WksName).Cells(Rows.Count, 1).End(xlUp).Row).Find("Fehlteile")
If Not Suche Is Nothing Then
Lzeile = ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
ThisWorkbook.Worksheets(1).Cells(Lzeile, 1) = Worksheets("" & WksName).Cells(Suche.Row, 2)
ThisWorkbook.Worksheets(1).Cells(Lzeile, 2) = DateiName
End If
End If
Workbooks(DateiName).Close SaveChanges:=False
End If
DateiName = Dir
Loop
Call EventsOn
End Sub

Public Function SheetExists(strName As String) As Boolean
On Error Resume Next
SheetExists = Not Worksheets(strName) Is Nothing
End Function


Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub

Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
0 Punkte
Beantwortet von
Hallo Nighty
Super, es funktioniert, danke vielmals.
Das mit dem Ordner auswählen ist auch super !

Nur vielleicht könntest du mir noch sagen, wie es lauten müßte, wenn der Ordner gleich festgelegt wird.
Sprich nicht auswählen, sondern gleich den richtigen Ordner hinterlegen

Danke
0 Punkte
Beantwortet von
Ach so die Frage wollte ich auch noch stellen:
Wieso funktioniert das trotzdem, obwohl meine Dateien xlsx heißen
und du nur xls deklariert hast ?
0 Punkte
Beantwortet von
Hallo Andi007 .-)

Ersetze die 5 Zeile
Dpfad = CreateObject("Shell.Application").BrowseForFolder(0, "Ordner auswählen", &H1000, 17).items().Item().Path & "\"


gegen(Pfad anpassen)
Dpfad = "J:\Temp\"


Gruß Nighty
0 Punkte
Beantwortet von
Hallo Andi007 .-)

Es werden nur 3 Zeichen übergeben!
Datei.Xlsblabla würde auch gelesen werden

Gruß Nighty
0 Punkte
Beantwortet von
Ah, ok

Danke nochmals, somit Problem gelöst
0 Punkte
Beantwortet von
Hallo Community ^^

Für weitere Ausschlußverfahren eine "and" Verknüpfung!

Grußß Nighty

z.b. bei der 10 Zeile
If ThisWorkbook.Name <> DateiName And Mid(DateiName, InStr(DateiName, ".") + 1, Len(DateiName)) = "xlsm" Then
...