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

Viele Datein, eine Zeile zusammenfügen

Viele Datein, eine Zeile zusammenfügen
14.06.2021 17:31:31
Kathr
Hallo zusammen,
ich scheitere an folgendem Problem:
Ziel ist es, eine Datenbank aufzubauen, die aus vielen Excel-Dateien (*xlsm) die genau gleich aufgebaut sind immer von einem Tabellenblatt eine Zeile in eine andere Datei zieht und dort in der nächsten freien Zeile speichert. So möchte ich langfristig das ständige copy pasten vermeiden.
Mit Hilfe verschiedener Foren habe ich mir folgenden Code gebastelt (ja, gebastelt trifft es aufgrund gefährlichem Halbwissens). Ich weiß nicht, ob es theoretisch funktioniert und bekomme aber konkret auch immer einen "Loop ohne Do" Fehler angezeigt. Ich habe schon viel im Forum gesucht, aber keine Antwort gefunden. Ich danke euch schon mal ganz doll!

Public Sub Aus_Datei_Lesen()
Dim lngColumn As Long
Dim strDateiPfad As String
Dim objDateiSuche As Object
Dim intAnzahlDateien As Integer
Dim strDateiName As String
Dim strTabelleName As String
Dim strBereich As String
Dim wksBlatt As Worksheet
Dim lngLetzteZeile As Long
On Error GoTo Aus_Datei_Lesen_Error
strDateiPfad = "H:\XX\" 'Ordnerpfad
strTabelleName = "Database" 'Name des Tabellenblatts
strBereich = "A2:AF2" 'zu kopierender Bereich
strBereich = Range(strBereich).Address(RowAbsolute:=True, ColumnAbsolute:=True, ReferenceStyle:=xlR1C1)
Set wksBlatt = ThisWorkbook.Worksheets("Tabelle1")
With wksBlatt
If wksBlatt.Range("A65536") = "" Then lngLetzteZeile = wksBlatt.Range("A65536").End(xlUp).Row
lngColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With
Set objDateiSuche = Application.FileSearch
With objDateiSuche
.NewSearch
.LookIn = strDateiPfad
.SearchSubFolders = False
.FileType = msoFileTypeAllFiles
.Filename = "*.xlsm"
If .Execute() > 0 Then
strDateiName = Dir(strDateiPfad & "*.xlsm")
Do While strDateiName  ""
For intAnzahlDateien = 1 To .FoundFiles.Count
strDateiName = Dir(.FoundFiles(intAnzahlDateien))
If strDateiName  ThisWorkbook.Name Then
With wksBlatt.Cells(lngLetzteZeile, lngColumn)
.Formula = "='" & strDateiPfad & "[" & strDateiName & "]" & strTabelleName & "'!" & strBereich
.Value = .Value
lngLetzteZeile = lngLetzteZeile + 1
End With
End If
strDateiName = Dir
Loop
Next intAnzahlDateien
End If
End With
Set objDateiSuche = Nothing
Set wksBlatt = Nothing
On Error GoTo 0
Exit Sub
Aus_Datei_Lesen_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ")"
Set objDateiSuche = Nothing
Set wksBlatt = Nothing
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Viele Datein, eine Zeile zusammenfügen
14.06.2021 18:55:58
JoWE
Hallo,
auf Anhieb:
das "Loop" direkt vor der Zeile "Next intAnzahlDateien" muss dort weg und hinter "Next intAnzahlDateien" gesetzt werden.
Gruß
Jochen
AW: Viele Datein, eine Zeile zusammenfügen
14.06.2021 20:56:13
Kathr
@JoWe: Wow, vielen Dank für deine Hilfe. Das funktioniert schon mal :)
Leider muss ich noch mal nachfragen: Jetzt bekomme ich immer einen Fehler " Fehler 445 - Objekt unterstützt diese Aktion nicht". Ich dachte, dass ich durch die Dir-Funktion das Problem gelöst hätte und es auch noch in neueren Versionen läuft. Könnte es daran liegen?
AW: Viele Datein, eine Zeile zusammenfügen
15.06.2021 18:50:35
JoWE
Wo genau im Code tritt der Fehler auf?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige