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

Daten von mehreren Dateien kopieren in Liste

Daten von mehreren Dateien kopieren in Liste
10.02.2019 18:37:01
mehreren
Hallo zusammen,
verwende folgenden Code, der auch funtkioniert, aber ich gerne ein paar Änderungen an der Ausführung hätte. Und zwar werden Daten aus Dateien im selben Ordner ausgelesen und in einer neuen Tabelle Zeilenweise aufgelistet. Jetzt ist es bei diesem Code aber so, dass die Daten als Pfade in den Zellen wiedergegeben werden z. B. ='C:\Users\One\Desktop\Excel Datenabfrage\[1.xlsx]Sheet1'!$B$3 - Ist es möglich, dass die Daten so wiedergegeben werden, wie sie an sich auch sind? Ich möchte diese Liste nach dem Auslesen bearbeiten können. Und die Performance des Codes soll dabei erhalten bleiben (funktioniert so wie er ist sehr schnell). Und die Const strSheetQ As String = "Sheet1" soll immer nur das erste Sheet ansprechen, wenn es möglich ist.
Danke im Voraus für eure Hilfe.
Option Explicit
Const strSheetQ As String = "Sheet1" ' Die Tabelle wird ausgelesen
Const strSheetZ As String = "Sheet1" ' Die Tabelle in dieser Datei
Dim ZielRow As Long, fe As Integer ' übergabe an dirInfo Programm
Sub Zellen_aus_Dateien_auslesen()
Dim stCalc As XlCalculationState
Dim strDir As String
Dim objFSO As Object
Dim objDir As Object
On Error GoTo Fin
With Application
stCalc = .Calculation
.ScreenUpdating = False
.AskToUpdateLinks = False
.EnableEvents = False
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
'Tabelleninhalt löschen und aktuellsten Stand auflisten
ThisWorkbook.Worksheets(strSheetZ).Cells.ClearContents
ZielRow = 4: fe = 0: Err = Empty  '1.Zeile zum auflisten
Set objFSO = CreateObject("Scripting.FileSystemObject")
strDir = ThisWorkbook.Path ' Datei im gleichen Ordner wie Auswertungsdateien
Set objDir = objFSO.GetFolder(strDir)
dirInfo objDir, "*.xlsx", False ' Dateityp, der ausgelesen wird / Mit Unterordner (False oder  _
True)
Fin:
With Application
.ScreenUpdating = True
.AskToUpdateLinks = True
.EnableEvents = True
.Calculation = stCalc
.DisplayAlerts = True
End With
Set objDir = Nothing
Set objFSO = Nothing
If Err > 0 Then MsgBox fe & "  Fehler aufgetreten"
End Sub

Sub dirInfo(ByVal objCurrentDir As Object, ByVal strName As String, _
Optional ByVal blnTMP As Boolean = False)
Dim objWorkbook As Workbook
Dim strFormula As String
Dim lngLastRow As Long
Dim varTMP As Variant
Dim Formel As String
On Error GoTo Fehler
For Each varTMP In objCurrentDir.Files
If varTMP.Name Like strName And varTMP.Name  ThisWorkbook.Name Then
With ThisWorkbook.Worksheets(strSheetZ)
Formel = Mid(varTMP.Path, 1, InStrRev(varTMP.Path, "\")) & "[" & _
Mid(varTMP.Path, InStrRev(varTMP.Path, "\") + 1) & "]" & _
strSheetQ & "'!"  'Formel Quelle in allen Zellen gleich
'B3, D3, F3, B6, D6, F6 Zellen in Formel einsetzen!
.Cells(ZielRow, 1).Formula = "='" & Formel & "$B$3"
.Cells(ZielRow, 2).Formula = "='" & Formel & "$D$3"
.Cells(ZielRow, 3).Formula = "='" & Formel & "$F$3"
.Cells(ZielRow, 4).Formula = "='" & Formel & "$B$6"
.Cells(ZielRow, 5).Formula = "='" & Formel & "$D$6"
.Cells(ZielRow, 6).Formula = "='" & Formel & "$F$6"
ZielRow = ZielRow + 1    'Nächste Zeile
End With
End If
Next varTMP
If blnTMP = True Then
For Each varTMP In objCurrentDir.SubFolders
dirInfo varTMP, strName
Next varTMP
End If
Set objWorkbook = Nothing
Exit Sub
Fehler: fe = fe + 1: Resume Next
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Daten von mehreren Dateien kopieren in Liste
10.02.2019 19:04:01
mehreren
Hallo Roman
schau mal im Code bite genau hin, das ist versehentlich ein Fehler drin, und zwar hier: -"='"
entferne bitte mal das ' Zeichen hinter = und schau mal ob dann die Formel als Formel wirksam ist.
Nur zum Testen hatte ich es eingebaut und nachher vergessen es zu entfernen.
mfg Piet
AW: Daten von mehreren Dateien kopieren in Liste
10.02.2019 19:51:32
mehreren
Hallo Roman
ich habe mal im Archiv gestöbert und etwas auch für mich gefunden was für dich interessant sein könnte.
Das Auslesen von Tabellen Namen eines ganzen Ordners in ein Sheet. - War deine Frage im anderen Thread!
Ich weiss nicht ob unsere Formel Experten einen Trick kennen das Sheet(1) in einer Formel anzugeben?
Nach meinem Wissen ist das nicht möglich, und wenn die Formel nicht passt öffnet Excel einen Dialog und erwartet das du ihm die richtige Tabelle angibst. Deshalb hatte ich die Formel deaktiviert, weil mich das nervte! Im Archiv fand ich einen Code zum Tabellen auflisten, denn ich so eingestellt habe das er dir immer nur das erste Blatt auflistet.
Man könnte sehen ob man meinen Code so umschreiben kann das er sich die Tabellen Namen aus einer Liste holt. Mal sehen...
Nach Montag Mittag bin ich einige Zeit nicht mehr erreichbar! (Urlaub)
Ich lasse diesen Thread offen und habe den anderen geschlossen.
mfg Piet
Sub GeschlosseneMappenListen()
Dim fs As Object
Dim fverz As Object
Dim fDatei As Object
Dim FDateien As Object
Dim x As Integer, z As Integer
Dim strDat As String, Pfad As String
Dim oWS As Worksheet, oWB As Workbook, oEA As Object
z = 3: x = 3
Pfad = "E:\_Excel Heute"
Set fs = CreateObject("Scripting.Filesystemobject")
Set fverz = fs.getfolder(Pfad)
Set FDateien = fverz.Files
Set oEA = CreateObject("Excel.Application")
ActiveSheet.UsedRange.ClearContents
For Each fDatei In FDateien
If InStr(fDatei, "xl") > 0 Then
Set oWB = oEA.Workbooks.Open(fDatei.Name, 0, True)
Cells(z, 2).Value = fDatei.Name
For Each oWS In oWB.Worksheets
Cells(z, x).Value = oWS.Name
Exit For  'x = x + 1
Next oWS
z = z + 1: x = 3
End If
Next fDatei
oEA.Quit
Set oWS = Nothing
Set oWB = Nothing
Set oEA = Nothing
Set fs = Nothing
Set fverz = Nothing
Set FDateien = Nothing
End Sub

Anzeige
AW: Daten von mehreren Dateien kopieren in Liste
10.02.2019 21:03:37
mehreren
Hallo Roman
Kommando zurück, habe in der 1. Antwort Blöödsinn erzaehlt. Das ' Zeichen gehört in die Formel! (bin Urlaubsreif...)
Anbei ein geanderter Code, wenn du dir eine Sheet Liste erstellst. Dieser Code holt sich dann den richtigen Blatt Namen aus der Liste und setzt diesen Namen in die Formel ein. Bis auf eine Datei wo ich Error Medlung bekam hat es geklappt. Probier ihn mal aus. Zuvor must du mit dem anderen Makro eine Sheetliste erstellen. Wie du das Blatt nennst bleibt dir überlassen. Bei diesem Makro steht "Sheetliste". Mit Range B3:B100! Wenn du es anders nennst bitte im Makro aendern!
mfg Piet
Sub dirInfo(ByVal objCurrentDir As Object, ByVal strName As String, _
Optional ByVal blnTMP As Boolean = False)
Dim objWorkbook As Workbook
Dim strFormula As String
Dim lngLastRow As Long
Dim varTMP As Variant
Dim Formel As String
Dim AJ As Range, Datei As String, Blatt As String
On Error GoTo Fehler
For Each varTMP In objCurrentDir.Files
If varTMP.Name Like strName And varTMP.Name  ThisWorkbook.Name Then
With ThisWorkbook.Worksheets(strSheetZ)
Formel = Mid(varTMP.Path, 1, InStrRev(varTMP.Path, "\")) & "[" & _
Mid(varTMP.Path, InStrRev(varTMP.Path, "\") + 1) & "]"
'Datei in Sheet Liste suchen  (neue Tabelle)
Blatt = strSheetQ   'Standaed Name vorladen
Datei = Mid(varTMP.Path, InStrRev(varTMP.Path, "\") + 1)
For Each AJ In ThisWorkbook.Worksheets("Sheetliste").Range("B3:B100")
If AJ.Value = Datei Then Blatt = AJ.Offset(0, 1)
Next AJ
'B3, D3, F3, B6, D6, F6 Zellen in Formel einsetzen!
.Cells(ZielRow, 1).Formula = "='" & Formel & Blatt & "'!$B$3"
.Cells(ZielRow, 2).Formula = "='" & Formel & Blatt & "'!$D$3"
.Cells(ZielRow, 3).Formula = "='" & Formel & Blatt & "'!$F$3"
.Cells(ZielRow, 4).Formula = "='" & Formel & Blatt & "'!$B$6"
.Cells(ZielRow, 5).Formula = "='" & Formel & Blatt & "'!$D$6"
.Cells(ZielRow, 6).Formula = "='" & Formel & Blatt & "'!$F$6"
ZielRow = ZielRow + 1    'Nächste Zeile
End With
End If
Next varTMP
If blnTMP = True Then
For Each varTMP In objCurrentDir.SubFolders
dirInfo varTMP, strName
Next varTMP
End If
Set objWorkbook = Nothing
Exit Sub
Fehler:
If Err = -2147417848 Then Resume Next
ok = MsgBox("Fehler bei: - " & Datei & Chr(10) & Error() & Chr(10) & "Weitermachen?",  _
vbOKCancel)
If ok = vbOK Then Resume Next
End Sub

Anzeige
AW: Daten von mehreren Dateien kopieren in Liste
10.02.2019 22:30:48
mehreren
Hallo Piet,
danke für deine schnelle Rückmeldung! Kein Problem, so geht es einem oft vor dem Urlaub :) Wenn das mit dem ersten Tabellenblatt nicht einfacher hinhaut, dann lasse ich das. Möchte ich auf Nummer sicher gehen, dass alle Tabellenblätter gleich heißen, werde ich sie mithilfe eines Makros alle zu einem gleichen Namen umbenennen.
Jetzt habe ich immer noch das Problem, dass nach dem Auslesen in der Zelle der Pfad steht, sobald ich doppelt reinklicke und nicht der eigentliche ausgelesene Inhalt.
Hast du oder jemand anderes hier eine Lösung?
Gruß
AW: Daten von mehreren Dateien kopieren in Liste
10.02.2019 23:17:25
mehreren
Hallo Roman
kannst du mir eine Beispieldatei schicken, ich habe Excel 2007, da funktioniert die Formel! Mir fiel aber auf das Excel staendig einen Fehler anmeckert, den ich mit Resume übersprungen habe. Vielleicht komme ich in deiner Datei dahinter woran das liegt. Ich brauch ja nur das Blatt wo die Formeln drin sind, mehr nicht.
mfg Piet
Anzeige
AW: Daten von mehreren Dateien kopieren in Liste
10.02.2019 23:39:06
mehreren
Hallo Piet,
habe folgenden Code eingefügt und jetzt werden die richtigen Werte ausgegeben
Dim i As Long
Dim astrLinks As Variant
astrLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
For i = 1 To UBound(astrLinks)
ActiveWorkbook.BreakLink Name:=astrLinks(i), Type:=xlLinkTypeExcelLinks
Next i
Kann man diesen Code so anpassen, dass Breaklink nur auf einen bestimmten Zellbereich angewendet wird?
Gruß
AW: offenstellen vergessen oWt
10.02.2019 21:08:42
Piet
AW: Daten von mehreren Dateien kopieren in Liste
11.02.2019 11:40:21
mehreren
Hallo Roman
dieser Befehl ist mir unbekannt, damit habe ich nıe gearbeitet. Ich klinke mich aus, Urlaub, und hoffe die Kollegen helfen dir weiter.
mfg Piet
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige