Zellen aus Dateien in Ordner lesen und ....

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Zellen aus Dateien in Ordner lesen und ....
von: Bastian
Geschrieben am: 16.09.2015 08:52:56

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

Bild

Betrifft: Doppelt owT
von: Bernd
Geschrieben am: 16.09.2015 09:01:03


Bild

Betrifft: AW: Zellen aus Dateien in Ordner lesen und ....
von: Daniel
Geschrieben am: 16.09.2015 09:22:22
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

Bild

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

Bild

Betrifft: AW: Zellen aus Dateien in Ordner lesen und ....
von: Bastian
Geschrieben am: 16.09.2015 11:00:18
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

Bild

Betrifft: AW: Zellen aus Dateien in Ordner lesen und ....
von: Daniel
Geschrieben am: 17.09.2015 12:58:28
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

Bild

Betrifft: AW: Zellen aus Dateien in Ordner lesen und ....
von: Bastian
Geschrieben am: 17.09.2015 14:11:42
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


Bild

Betrifft: AW: Zellen aus Dateien in Ordner lesen und ....
von: Daniel
Geschrieben am: 17.09.2015 21:32:48
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

Bild

Betrifft: AW: Zellen aus Dateien in Ordner lesen und ....
von: Bastian
Geschrieben am: 18.09.2015 07:24:57
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

Bild

Betrifft: AW: Zellen aus Dateien in Ordner lesen und ....
von: Bastian
Geschrieben am: 18.09.2015 08:33:49
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 ^^

Bild

Betrifft: AW: Zellen aus Dateien in Ordner lesen und ....
von: Daniel
Geschrieben am: 17.09.2015 12:54:54
Hi
erstetze:


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

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zellen aus Dateien in Ordner lesen und ...."