Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1624to1628
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 auf Serverlaufwerk auslesen

Dateien auf Serverlaufwerk auslesen
23.05.2018 13:08:32
Tom
Hallo,
ich möchte auf dem Server liegende Ordner mit xls* Dateien auslesen und den Inhalt von diversen Spalten und Zeilen in einem Tabellenblatt abspeichern. Die Dateiordner sowie die xlsx Dateien haben eine unterschiedliche Benennung, die Inhalte variieren auch. Mit welcher Funktion ist das möglich?
Wenn ich die auszulesenden Dateien zeitlich von Datum x bis Datum y (Anlagedatum) eingrenzen könnte wäre das zudem noch eine Erleichterung für mich.
Hat jemand eine gute Idee?
Vielen Dank
Tom

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien auf Serverlaufwerk auslesen
23.05.2018 15:17:22
Günther
Moin Tom,
apropos "Erleichterung": Ich sehe im ersten Moment 2 sinnvolle Möglichkeiten: VBA oder (als wirkliche Erleichterung und mit mehr Flexibilität) Power Query (wenn du es einsetzen darfst ...); für PQ ein Beispiel hier: http://www.excel-ist-sexy.de/alle-xlsx-eines-ordners-importieren/
AW: Dateien auf Serverlaufwerk auslesen
23.05.2018 15:48:46
UweD
Hallo
so?
Sub Dateien()
    Dim FSO, F, Datei, i As Integer, Pfad As String, Ext As String
    Dim TB1, WB2, TB2, DatumVon As Date, DatumBis As Date, SP As Integer
    
    On Error GoTo Fehler
    
    '**** 
    Pfad = "X:\Temp\"
    SP = 2 ' Zielspalte 
    
    DatumVon = InputBox("Von Datum", "Eingabe Dateum", Date - 300)
    DatumBis = InputBox("Von Datum", "Eingabe Dateum", Date)
    
    Ext = "xls" 'auch mit x und m 
    
    Set TB1 = ThisWorkbook.Sheets("Tabelle1")
    '**** 
    
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    For Each Datei In FSO.getFolder(Pfad).Files
    
        If InStr(LCase(FSO.GetExtensionName(Datei)), LCase(Ext)) > 0 Then
            Set F = FSO.getfile(Datei)
            If F.DateCreated >= DatumVon And F.DateCreated <= DatumBis Then
                
                'mach was damit 
                Workbooks.Open Filename:=Datei
                Set WB2 = ActiveWorkbook
                Set TB2 = WB2.Sheets(1)
                
                i = i + 1
                
                'Daten übertragen 
                TB1.Cells(i, SP) = TB2.Range("A1") 'Beispiel 
                TB1.Cells(i, SP).Offset(0, 1) = TB2.Range("B1")
                
                
                WB2.Close False 'schliessen ohne speichern 
            End If
        End If
    Next
    
    Err.Clear
Fehler:
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

LG UweD
Anzeige
AW: Dateien auf Serverlaufwerk auslesen
25.05.2018 13:14:14
Tom
Hallo UweD,
danke...aber es läuft bei mir nicht. Das Datum von bis wird abgefragt und dann passiert nichts weiter. Anbei z.B. die Dateiform die ausgelesen werden soll. Es wird nur das Sheet Protokoll benötigt und dort auch nur der Inhalt der Spalten T,V und W.
https://www.herber.de/bbs/user/121822.xlsx
Gruß Tom
AW: Dateien auf Serverlaufwerk auslesen
25.05.2018 14:22:06
UweD
Hallo
ok. ich hab einiges geändert
- ich verwende jetzt das Lastmodified Datum und das ohne die Uhrzeit
- Den Blattbezug hab ich eingebaut und auch dei Referenz auf die 3 Spalten
unklar war mir jetzt noch wo das ganze hinkopiert werden soll.
- ich hab es jetzt mal so gemacht, dass es immer hinten ergänzt wird
Sub Dateien()
    Dim FSO, F, Datei, Pfad As String, Ext As String
    Dim TB1, WB2, TB2, DatumVon As Date, DatumBis As Date, CC As Integer
    
    On Error GoTo Fehler
    
    '**** 
    Pfad = "X:\Temp\Test\"
    
    DatumVon = InputBox("Von Datum", "Eingabe Dateum", Date - 1)
    DatumBis = InputBox("Von Datum", "Eingabe Dateum", Date)
    
    Ext = "xls" 'auch mit x und m 
    
    Set TB1 = ThisWorkbook.Sheets("Tabelle1")
    '**** 
    
    
    CC = TB1.Cells.SpecialCells(xlCellTypeLastCell).Column + 1
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    For Each Datei In FSO.getFolder(Pfad).Files
    
        If InStr(LCase(FSO.GetExtensionName(Datei)), LCase(Ext)) > 0 Then
            Set F = FSO.getfile(Datei)
            If Int(F.DateLastModified) >= DatumVon And Int(F.DateLastModified) <= DatumBis Then
                
                'mach was damit 
                Workbooks.Open Filename:=Datei
                Set WB2 = ActiveWorkbook
                Set TB2 = WB2.Sheets("Protokoll")
                
                
                'Daten übertragen: fügt immer eine Spalte hinten an 
                With TB1.Columns(CC)
                    .Value = TB2.Range("T:T").Value
                    .Offset(0, 1).Resize(, 2).Value = TB2.Range("V:W").Value
                    CC = CC + 3
                End With
                
                WB2.Close False 'schliessen ohne speichern 
            End If
        End If
    Next
    
    Err.Clear
Fehler:
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

LG UweD
Anzeige
AW: Dateien auf Serverlaufwerk auslesen
25.05.2018 15:02:43
Tom
Hallo UweD,
ok, jetzt läuft’s schon einmal. Ich habe noch vergessen zu erwähnen, dass sich jede Datei in einem eigenen Ordner mit der identischen Bezeichnung der Datei befindet. Fortlaufend ist perfekt. Schön wäre es noch wenn der Name der Datei fortlaufend mit aufgelistet wird. Kannst Du mir das bitte noch einmal anpassen?
LG Tom
AW: Dateien auf Serverlaufwerk auslesen
25.05.2018 15:23:51
UweD
HAllo nochmal

&gt&gt Ich habe noch vergessen zu erwähnen, dass sich jede Datei in einem eigenen Ordner mit der identischen Bezeichnung der Datei befindet.

verstehe ich nicht.
Es sollten doch alle Dateien in EINEM bestimmten Ordner (Laufwerkverzeichnis) abgearbeitet werden
Oder meinst du ein eigenes Tabellenblatt innerhalb der Zieldatei?

&gt&gt Schön wäre es noch wenn der Name der Datei fortlaufend mit aufgelistet wird.

hab ich jetzt in die erste Zeile reingeschrieben
...
                'Daten übertragen: fügt immer eine Spalte hinten an 
                With TB1.Columns(CC)
                    .Value = TB2.Range("T:T").Value
                    .Offset(0, 1).Resize(, 2).Value = TB2.Range("V:W").Value
                    .Cells(1) = Dir(Datei)
                    CC = CC + 3
                End With
                
                WB2.Close False 'schliessen ohne speichern 

...
LG UweD
Anzeige
AW: Dateien auf Serverlaufwerk auslesen
25.05.2018 15:33:54
Tom
.....unter dem Laufwerk liegen Ordner in denen sich die Excel-Dateien befinden, die ich dann auslesen möchte. Leider ist für jede Excel ein Ordner angelegt.
LG Tom
offen für alle..
25.05.2018 17:02:21
UweD

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige