Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zellen aus Dateien in Ordner lesen und ....

Zellen aus Dateien in Ordner lesen und ....
16.09.2015 08:52:56
Bastian
Hallo ich habe dieses Makro gefunden es ist zum Zellen auslesen aus der Dateien .xls & .xlsx die sich in einem Ordner befinden.
1.Es funktioniert ganz gut nur würde ich gerne beim starten des Makros den Ordner der durchsucht werden soll selber auswählen und nicht immer hier in dem Makro ändern
2. Ich würde gerne mehr als nur nach 2 Zeilen suchen .
3. Es soll kein Auswahl Fenster kommen wo das Tabellen Blatt ausgewählt wird sondern immer das 1 Tabellen Blatt nehmen.
4. Die Daten sollen in die Zieldatei nicht in A1 angefangen werden zu schreiben sondern A3 .

Sub searchDir()
Dim fs, f, f1, fc, arr, i
Dim strOrdner As String, strMappe As String
strOrdner = "U:\Prüfprotokolle" ' anpassen
strMappe = "RG"
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(strOrdner)
Set fc = f.Files
ReDim arr(fc.Count, 1)
For Each f1 In fc
If Right(f1.Name, 3) = "xls" Or Right(f1.Name, 4) = "xlsx" Then
arr(i, 0) = "='" & strOrdner & "\[" & f1.Name & "]" & strMappe & "'!$D4"
arr(i, 1) = "='" & strOrdner & "\[" & f1.Name & "]" & strMappe & "'!$D5"
End If
i = i + 1
Next
With ThisWorkbook.ActiveSheet
.Range(.Cells(1, 1), .Cells(UBound(arr), 2)) = arr
With .Range(.Cells(1, 1), .Cells(UBound(arr), 2))
.Value = .Value
End With
End With
End Sub
Könnte mir irgendwer Helfen
mit freundlichen Grüßen
Bastian

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Doppelt owT
16.09.2015 09:01:03
Bernd

AW: Zellen aus Dateien in Ordner lesen und ....
16.09.2015 09:22:22
Daniel
Hi
zu 1)
ersetze die Befehlszeile
strOrdner = "U:\Prüfprotokolle"

durch folgenden Code:
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Ordnerauswahl"
.ButtonName = "Auswahl..."
.InitialView = msoFileDialogViewList
If .Show = -1 Then strOrdner = .SelectedItems(1)
End With
zu 2)
ändere hier ReDim arr(fc.Count, 1)die Anzahl der Spalten (die 1) ab, je nachdem wie viele Werte du brauchst. Da im Array der erste Eintrag die 0 hat, trägt man die Anzahl - 1 ein.
erweitere dann diese Zeilen entsprechend, dh füge weitere zeilen ein und ändere entsprechend die Indexnummer im Array arr und die Adresse der auszulesenden Zelle:
ReDim arr(fc.Count, 3)
arr(i, 0) = "='" & strOrdner & "\[" & f1.Name & "]" & strMappe & "'!$D4"
arr(i, 1) = "='" & strOrdner & "\[" & f1.Name & "]" & strMappe & "'!$D5"
arr(i, 2) = "='" & strOrdner & "\[" & f1.Name & "]" & strMappe & "'!$D6"
arr(i, 3) = "='" & strOrdner & "\[" & f1.Name & "]" & strMappe & "'!$D7"
zu 3)
das geht nicht. Du musst hier in der Formel den richtigen Tabellenblattnamen (Variable strMappe) eintragen.
Per Formel kannst du die Blätter nur über den Namen ansprechen, du kannst nicht auf das erste Blatt unabhängig von Namen) zugreifen.
Dh du musst in den Dateien die Blätter alle gleich benennen und diesen Namen der Variabeln strMappe zuweisen.
zu 4)
ersetze:

.Range(.Cells(1, 1), .Cells(UBound(arr), 2)) = arr
With .Range(.Cells(1, 1), .Cells(UBound(arr), 2))
.Value = .Value
End With
End With

durch:
With ActiveSheet.Cells(3, 1).Resize(UBound(arr, 1) + 1, Ubound(arr, 2) + 1)
.Formula = arr
.Formula = .Value
End With

Gruß Daniel

Anzeige
AW: Zellen aus Dateien in Ordner lesen und ....
16.09.2015 09:58:06
Bastian
Vielen Dank
Gibt es noch eine Möglichkeit damit keine Fehler kommt wenn ich bei der Ordner Wahl auf abbrechen drücke?
Gruß Bastian

AW: Zellen aus Dateien in Ordner lesen und ....
16.09.2015 11:00:18
Bastian
Ach ja mir fällt noch etwas ein .
1.Ist es möglich so etwas zu schreiben "strMappe = "1 - 1" or "1 - 2" or "1 - 3" .... bis "1 - 10"
2.Könnte man den Dateinamen in die Spalte A schreiben lassen und direkt mit Hyperlink damit die Zuordnung eindeutig ist.
Gruß Basti

Anzeige
AW: Zellen aus Dateien in Ordner lesen und ....
17.09.2015 12:58:28
Daniel
Hi
zu 1) nein.
du musst bei strMappe genau den richtigen Tabellenblattnamen eintragen.
wenn der unbekannt ist und das richtige Blatt erst suchen musst, musst du die Dateien einzeln öffnen und dann sowieso ganz anders vorgehen.
zu 2)
geht sicherlich, wie weiss ich aber auch nicht auswendig.
In solchen Fällen ist der Recorder mein Freund, deiner sicherlich auch.
Gruß Daniel

Anzeige
AW: Zellen aus Dateien in Ordner lesen und ....
17.09.2015 14:11:42
Bastian
Vielen Dank Daniel .
Aber ich kenne die Namen es sind höchstens der strMappe es sind ca. 20 Stück die wollte ich irgendwie da eintragen aber wie .
Oder hab ich etwas falsch verstanden das diese auch nicht möglich ist.
Das mit den Hyperlinks hab ich hin bekommen
Sub HyperL()
Dim FSO As Object
Dim strPfad As String
Dim x As Integer
Dim strGef As Object
Application.ScreenUpdating = False
strPfad = (Pfad)
'ActiveSheet.UsedRange.Clear
Set FSO = CreateObject("Scripting.FilesystemObject")
For Each strGef In FSO.getfolder(strPfad).Files
Select Case LCase(FSO.getextensionname(strGef))
Case "xls", "xla", "xlsm", "xlsx"
x = x + 1
ActiveSheet.Hyperlinks.Add Anchor:=Cells(x + 2, 1), Address:= _
strGef, TextToDisplay:=strGef.Name
End Select
Next
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Zellen aus Dateien in Ordner lesen und ....
17.09.2015 21:32:48
Daniel
Hi
du kannst die Tabellenblattnamen auch ohne Variable direkt in die Formeln eintragen:
arr(i, 0) = "='" & strOrdner & "\[" & f1.Name & "]DeinTabellenblattname'!$D4"
du kannst die Namen auch über eine Inpuptbox eingben:
strName = Inputbox("Tabellenblatt")
arr(i, 0) = "='" & strOrdner & "\[" & f1.Name & "]" & strName & "'!$D4"
oder die Inputbox direkt verwenden:

arr(i, 0) = "='" & strOrdner & "\[" & f1.Name & "]" & Inputbox("Tabellenblatt") & "'!$D4"
Gruß Daniel

Anzeige
AW: Zellen aus Dateien in Ordner lesen und ....
18.09.2015 07:24:57
Bastian
Hallo Daniel
Meine Tabellenblatt Namen sehen so aus 1 - 1 oder 1 - 2
Wie bekomme ich mehrere Tabellenblatt Namen hier rein
arr(i, 0) = "='" & strOrdner & "\[" & f1.Name & "]DeinTabellenblattname'!$D4"
Ich will sozusagen eine BOX haben wo alle Tabellenblatt Namen stehen und das Programm selber die heraus sucht und ich somit keine Bestätigung mehr machen muss
Danke

Anzeige
AW: Zellen aus Dateien in Ordner lesen und ....
18.09.2015 08:33:49
Bastian
Hallo =)
Ich habe mir das so gedacht aber leider setzt der immer nur den letzten wert =(
Sub wenndannsonst()
If Strmappe = "1 - 1" Then
Strmappe = "1 - 1"
ElseIf Strmappe = "1 - 2" Then
Strmappe = "1 - 2"
Else: Strmappe = "1 - 3"
End If
End Sub
Nur leider geht das so nicht ^^

Anzeige
AW: Zellen aus Dateien in Ordner lesen und ....
17.09.2015 12:54:54
Daniel
Hi
erstetze:

If .Show = -1 Then strOrdner = .SelectedItems(1)
durch:
If .Show = -1 Then
strOrdner = .SelectedItems(1)
else
Exit Sub
end if
Gruß Daniel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige