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

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

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

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

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige