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

Zellen aus Dateien in eine Liste kopieren

Zellen aus Dateien in eine Liste kopieren
02.02.2014 20:38:31
Jürgen
Hallo
Kann mir vielleicht bitte jemand helfen. Ich denke es ist für die meisten ein sehr einfaches Thema. Es sollen bestimmte Zellen(jeweils immer die gleichen z.B. A1:C1) aus Reiseabrechnungen (unterschiedl. Namensgebung) z.B. Reisekosten_Erfurt_15.02.2013 etc. alle abgelegt in einem Verzeichnis in ein Masterdocument "Fahrtenbuch" abgelegt werden(ohne dabei geöffnet zu werden!). Da ich noch ziemlicher Anfänger bin, bitte ich um eine etwas ausführlicheren Vorgehensweise, da ich es schon; leider ohne Erfolg, mit Information aus anderen Beiträgen probiert habe.
Vielen Dank vorab!
Grüße
Jürgen

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen aus Dateien in eine Liste kopieren
03.02.2014 07:50:42
fcs
Hallo Jürgen,
eine Lösung per Formel ist nur möglich, wenn
- die Namen der Tabellen in den Dateien immer identisch sind.
- die Dateien nicht Kennwortgeschützt sind.
- keine anderen Dateien in dem Verzeichnis sind, oder die Dateien an Hand des Namens eindeutig erkannt werden können.
Dann kann man per Makro die Dateinamen abarbeiten und entsprechenden Formeln in die Zieltabelle einfügen und nach Neuberechnung die Formeln durch ihre Werte ersetzt werden.
Sind die obigen Voraussetzungen erfüllt?
Warum willst du die Dateien nicht kurzzeitig per Makro öffnen (in diesem Fall dann schreibgeschütz), um die Daten in die Zieltabelle zu übertragen?
Gruß
Franz

Anzeige
AW: Zellen aus Dateien in eine Liste kopieren
03.02.2014 15:21:05
Jürgen
Hallo Franz
Die Voraussetzungen sind erfüllt. Ein Öffnen der einzelnen Dateien über Makro denke ich ist möglich. Es werden ja immer wieder mal Reiseabrechnungen in diesen Ordner abgelegt und dann sollte die neue Datei bzw. deren bestimmte Zellen in das Excel-Fahrtenbuch automatisch übernommen werden.
Ich hoffe ich konnte es einigermaßen erklären...die Anwendung eines Fahrtenbuches und die Übernahme aus den Reisekostendateien ist nachvollziehbar oder?
Könntest Du die Lösung auch als Excel Datei oder als einigermaßen nachvollziehbare Lösung für einen Anfänger so wie ich mitteilen?
Vielen Dank
Grüße
Jürgen

Anzeige
AW: Zellen aus Dateien in eine Liste kopieren
03.02.2014 16:53:24
fcs
Hallo Jürgen,
hier ein Makro, das Daten aus den Exceldateien Dateien im Verzeichnnis ausliest.
Damit nicht jedes mal alle Dateien geöffnet werden müssen werden in der Liste auch der Dateiname und das Speicherdatum der Dateien gespeichert.
Die beiden Makros kopierst du im VBA-Editor in das Modul "DieseArbeitsmappe" der Datei.
Beim Öffnen der Datei wird dann automatisch gefragt, of die daten aktualisiert werden sollen.
Gruß
Franz
'Code im VBA-Editor unter DieseArbeitsmappe der Datei
Option Explicit
Sub FahrtenbuchAktualisieren()
Dim wksZ As Worksheet
Dim wkbQ As Workbook, wksQ As Worksheet
Dim rngZ As Range, ZeileZ As Long
Dim strVerzeichnis As String, varDatei, strDatei, bolRead As Boolean
Dim datDateidatum As Date
Dim StatusCalc As Long
On Error GoTo Fehler
strVerzeichnis = "Y:\Test" 'Verzeichnis mit den auszulesenden Dateien - anpassen !!!
Set wksZ = ActiveWorkbook.Worksheets("Fahrtenbuch") 'anpassen !!!
'Makrobremsen lösen
With Application
.ScreenUpdating = False
StatusCalc = .Calculation 'Berechnungsmodus merken
.Calculation = xlCalculationManual
.EnableEvents = False
End With
'Exceldateien im Verzeichnis suchen
varDatei = Dir(strVerzeichnis & "\*.xls*")
Do Until varDatei = ""
bolRead = False
'Pfad + Dateiname in Variable schreiben
strDatei = strVerzeichnis & "\" & varDatei
datDateidatum = VBA.FileDateTime(strDatei) 'Speicherdatum der Datei
With wksZ
'Dateiname in Spalte A der Zieltabelle suchen
Set rngZ = .Columns(1).Find(what:=varDatei, LookIn:=xlValues, lookat:=xlWhole)
If rngZ Is Nothing Then
'Datei Neu
ZeileZ = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
bolRead = True
Else
'Datei schon vorhanden
ZeileZ = rngZ.Row
'Speicherdatum vergleichen
If datDateidatum  .Cells(ZeileZ, 2) Then bolRead = True
End If
If bolRead = True Then
'Reiseabrechnungsdatei öffnen - schreibgeschützt
Set wkbQ = Application.Workbooks.Open(Filename:=strDatei, _
UpdateLinks:=False, ReadOnly:=True)
'Quelltabelle setzen
Set wksQ = wkbQ.Worksheets(1) ' oder wkbQ.Worksheets("Tabelle ABC")
'Daten in Zieltabelle eintragen
.Cells(ZeileZ, 1) = varDatei          'Dateiname
.Cells(ZeileZ, 2) = datDateidatum     'Speicherdatum
.Cells(ZeileZ, 3) = wksQ.Range("A1")
.Cells(ZeileZ, 4) = wksQ.Range("B1")
.Cells(ZeileZ, 5) = wksQ.Range("C1")
.Cells(ZeileZ, 6) = wksQ.Range("F3")
'usw.
'Quelldatei wieder schliessen
wkbQ.Close savechanges:=False
End If
End With
'nächste Datei suchen
varDatei = Dir
Loop
Fehler:
With Err
Select Case .Number
Case 0 'alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
'Makrobremsen zurücksetzen
With Application
.ScreenUpdating = True
.Calculation = StatusCalc
.EnableEvents = True
End With
End Sub
Private Sub Workbook_Open()
If MsgBox("Fahrtenbuch jetzt aktualisieren?", _
vbQuestion + vbOKCancel, "Fahrtenbuch") = vbOK Then
Call FahrtenbuchAktualisieren
End If
End Sub

Anzeige
AW: Zellen aus Dateien in eine Liste kopieren
04.02.2014 15:36:59
Jürgen
Hallo Franz
du hast mir sehr geholfen! Eine Frage noch: Falls es Änderungen gibt bzw. Datein aus dem Ordnerverzeichnis gelöscht werden sollte das Fahrtenbuch sich anpassen. Die alten oder gelöschten Reisekostenabrechnugen sollten dann auch nicht mehr aufgelistet werden. Kannst Du mir da nochmal helfen?
Vielen Dank !
Grüße
Jürgen

AW: Zellen aus Dateien in eine Liste kopieren
04.02.2014 16:52:27
fcs
Hallo Jürgen,
Änderungen von Dateien werden schon aktualisiert - wenn das Speicherdatum sich ändert.
Füge den neuen Abschnitt im Makro ein, um Dateien in der Liste zu löschen, die im Verzeichnis nicht mehr existieren.
Gruß
Franz
Sub FahrtenbuchAktualisieren()
Dim wksZ As Worksheet
Dim wkbQ As Workbook, wksQ As Worksheet
Dim rngZ As Range, ZeileZ As Long
Dim strVerzeichnis As String, varDatei, strDatei, bolRead As Boolean
Dim datDateidatum As Date
Dim StatusCalc As Long
On Error GoTo Fehler
strVerzeichnis = "Y:\" ' Test" 'Verzeichnis mit den auszulesenden Dateien - anpassen !!!
Set wksZ = ActiveWorkbook.Worksheets("Fahrtenbuch") 'anpassen !!!
'Makrobremsen lösen
With Application
.ScreenUpdating = False
StatusCalc = .Calculation 'Berechnungsmodus merken
.Calculation = xlCalculationManual
.EnableEvents = False
End With
'NEU - Beginn
'Prüfen, ob gelistete Dateien noch vorhanden sind.
With wksZ
For ZeileZ = .Cells(.Rows.Count, 1).End(xlUp).Row To 2 Step -1
strDatei = strVerzeichnis & "\" & .Cells(ZeileZ, 1).Text
If Dir(strDatei) = "" Then
'Zeile löschen wenn Datei nicht mehr vorhanden
.Rows(ZeileZ).Delete
End If
Next
End With
'NEU - Ende
'Exceldateien im Verzeichnis suchen

Anzeige
AW: Zellen aus Dateien in eine Liste kopieren
05.02.2014 18:07:37
Jürgen
Hallo Franz
Alles funktioniert prima und ich möchte mich bei Dir herzlich bedanken.
Gruß
Jürgen

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige