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

.XLS zusammenführen und automatisch löschen

.XLS zusammenführen und automatisch löschen
16.11.2018 17:34:52
Tobias
Hallo!
Ich habe den Auftrag bekommen, es zu ermöglichen, dass per Button, alle .xls Dateien in einen bestimmten Ordner zusammengeführt werden können. In diesen .xls Dateien existiert nur eine Zeile(Zeile 1) mit ca. 60 Spalten.
Die Werte sollen tabellarisch untereinander geschrieben werden.
Im Grunde habe ich schon ein ähnliches Script, jedoch öffnet sich hier das Dialogfenster und ich muss manuell die Dateien suchen und hinzufügen.
Ziel wäre, automatisch alle Dateien in einen festen Ordner zusammenzuführen und diese nach der !erfolgreichen! Zusammenführung gleich automatisch zu löschen.
Hier mal kurz der bestehende Code.
Public Sub Daten_uebertragen()
Option Explicit
Dim strFile As String
Dim objWorkbook As Workbook
Dim objTargetWorksheet As Worksheet
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Quelldatei auswählen"
.ButtonName = "Datei öffnen"
.AllowMultiSelect = True
If .Show Then
strFile = .SelectedItems(1)
Set objTargetWorksheet = ThisWorkbook.Worksheets(1)
Set objWorkbook = Workbooks.Open( _
Filename:=strFile, UpdateLinks:=0, ReadOnly:=True)
With objWorkbook.Worksheets(1)
.Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp).Resize(1, 7)).Copy _
Destination:=objTargetWorksheet.Cells( _
objTargetWorksheet.Rows.Count, 1).End(xlUp).Offset(1, 0)
End With
objWorkbook.Close SaveChanges:=False
Set objTargetWorksheet = Nothing
Set objWorkbook = Nothing
End If
End With
End Sub

Ich wäre sehr dankbar, wenn sich hier vielleicht einer Zeit nimmt und mir helfen kann.
Danke im Voraus
mit freundlichen Grüßen
Tobias

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: .XLS zusammenführen und automatisch löschen
16.11.2018 19:23:45
Oisse
Hallo Tobias,
leg bitte einen Ordner in dem Verzeichnis an, in dem du die Excelmappe hast, mit dem Namen "Importe" und einen Ordner mit dem Namen "Exporte".
In deinen Ordner "Importe" lege alle Excelmappen ab, aus denen du die Daten importieren möchtest.
Dann füge bitte folgenden Code in ein allgemeines Modul ein.

Sub Filesearch()
Dim strDir As String, objFSO As Object, objDir As Object
Set objFSO = CreateObject("scripting.filesystemobject")
strDir = ThisWorkbook.Path & "\Importe\"            'Ordner aus dem importiert wird
Set objDir = objFSO.GetFolder(strDir)
Dateienausgeben objDir
Set objDir = Nothing: Set objFSO = Nothing
End Sub
Sub Dateienausgeben(ByVal Ordner As Object)
Dim DatOrd As Variant, Datei As Object
Dim Import_Arr()            'Vollstandiger Dateipfad zum ?ffnen der Mappe
Dim Anzahl As Long
Dim i As Long
Dim e As Long
Dim Z As Long
Dim Text As String
Dim intLeerPos As Long
Dim wkb As Workbook
Dim var_Datei As Workbook
Dim wks_var As Worksheet
Dim wks As Worksheet
Dim lz As Long
Dim ls As Long
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set wkb = ThisWorkbook
Set wks = wkb.Worksheets("Tabelle1")
Application.DisplayAlerts = False
'Z?hlen der Eintr?ge im Ordner "Importe"
Anzahl = 0
For Each Datei In Ordner.Files             'Ordner
Anzahl = Anzahl + 1
'    Debug.Print Datei.Name                 'Dateiname im Direktfenster ausgeben
Next
ReDim Import_Arr(Anzahl - 1)
'Array f?llen: Import_Arr mit dem kompletten Pfad und Namen;
i = 0
For Each Datei In Ordner.Files             'Ordner
Import_Arr(i) = Datei
i = i + 1
Next
'Ab hier werden die Daten ausgelesen und in die Tabelle übertragen
Z = 0
For Each Datei In Ordner.Files             'Ordner
Import_Arr(Z) = Datei
Text = Datei.Name
intLeerPos1 = InStr(Text, " ")
intLeerPos2 = InStr(intLeerPos1 + 1, Text & " ", " ")
Set var_Datei = GetObject(Datei)
Set wks_var = var_Datei.Worksheets(1)
Dateiname = var_Datei.Name
ls_var = wks_var.Cells(1, Columns.Count).End(xlToLeft).Column
e = 0
With wks_var
Arr_Namen = .Range(.Cells(2, 1), .Cells(2, ls_var))
End With
'Hier wird die Importmappe aus der importiert wird geschlossen und in den Ordner " _
Exporte" verschoben
wks_var.Parent.Close True
Auslagerungsdatei = ThisWorkbook.Path & "\Exporte\" & Dateiname
fso.MoveFile Datei, Auslagerungsdatei
lz = wks.Cells(Rows.Count, 1).End(xlUp).Row
With wks
.Range(.Cells(lz + 1, 1), .Cells(lz + 1, ls_var)) = Arr_Namen
End With
Next
Application.DisplayAlerts = True
End Sub

Ich wünsche dir, dass es funktioniert
Gruß Oisse
Anzeige
AW: .XLS zusammenführen und automatisch löschen
16.11.2018 19:37:16
Tobias
Hallo Oisse,
vielen Dank für die schnelle Antwort!!
Lieder funktioniert der Code nicht, beim ausführen werden zwar alle Dateien von Importe in Exporte verschoben, jedoch tauchen die Daten nicht in der "Haupttabelle" auf.
mit freundlichen Grüßen
Tobias
AW: .XLS zusammenführen und automatisch löschen
16.11.2018 19:51:02
Oisse
Dann stimmt wahrscheinlich dein Tabellenname nicht. Den musst du natürlich anpassen.
Wie lautet denn der Tabellenname in den importiert werden soll?
AW: .XLS zusammenführen und automatisch löschen
16.11.2018 20:03:13
Tobias
Hallo Oisse,
hier könnte das Problem liegen.
In der Haupttabelle ist es "Tabelle1", jedoch in allen Importdateien "Sheet1".
mit freundlichen Grüßen
Tobias
Anzeige
AW: .XLS zusammenführen und automatisch löschen
16.11.2018 20:18:49
Oisse
Gibt es in den Importdateien nur eine einzige Tabelle? Und heißt diese dann "Sheet1"?
AW: .XLS zusammenführen und automatisch löschen
16.11.2018 20:31:43
Tobias
Ja es gibt jeweils nur eine Zeile und eine Tabelle(Sheet1), nur Spalten gibt es mehrere.
Hab jedoch gerade mal zum Test neue Importdateien abgespeichert, in welchen ich die Tabellen auf "Tabelle1" umbenannt habe. Hat leider trotzdem nicht funktioniert. Die Dateien werden verschoben und im Hintergrund sieht man auch, dass sie kurz "geöffnet" werden.. Nach dem Vorgang ist auch die letzte Zelle aktiv(bzw der Cursor drin) in welcher etwas stehen müsste. Nun sind diese alle leider ohne Inhalt.
Hier mal ein Upload vom ganzen Ordneraufbau inkl. der Excel Dateien
https://www.herber.de/bbs/user/125447.zip
Anzeige
Zip-Ordner ist leer
16.11.2018 20:50:34
Oisse
Dein Zip-Ordner ist leer
AW: Zip-Ordner ist leer
16.11.2018 21:09:25
Oisse
Tut mir sehr leid.
In meinem Code hab ich die zweite Zeile und nicht die erste Zeile eingelesen.
Bitte ändere
Arr_Namen = .Range(.Cells(1, 1), .Cells(1, ls_var))

Gruß Oisse
AW: .XLS zusammenführen und automatisch löschen
16.11.2018 20:29:28
Oisse
Ersetze doch die Zeile
Set wks_var = var_Datei.Worksheets(1)

durch die Zeile
Set wks_var = var_Datei.Worksheets("Sheet1")

Probier mal
Anzeige
AW: .XLS zusammenführen und automatisch löschen
16.11.2018 20:50:20
Tobias
Hab ich probiert, ändert jedoch nichts. Die Dateien werden wieder verschoben, jedoch keine Zellen beschrieben.
Danke schon mal für deine Mühe!
AW: .XLS zusammenführen und automatisch löschen
16.11.2018 21:01:42
Oisse
Schick doch mal eine deiner zu importierenden Mappen durch
AW: .XLS zusammenführen und automatisch löschen
16.11.2018 21:11:12
Oisse
Ich hab dir weiter oben im Tread geantwortet.
Ich hab dir leider die falsche Zeile im Code angegeben.
Bitte ändere auf

Arr_Namen = .Range(.Cells(1, 1), .Cells(1, ls_var))

AW: .XLS zusammenführen und automatisch löschen
16.11.2018 21:18:10
Tobias
Super! Jetzt funktioniert alles genauso wie ich mir es vorgestellt habe!!
Vielen Dank für deine Mühe! Und tolles Forum, am selben Abend wurde mir gleich geantwortet und geholfen! Top
mit freundlichen Grüßen
Tobias
Anzeige
AW: .XLS zusammenführen und automatisch löschen
16.11.2018 21:19:55
Oisse
Freut mich, wenn funktioniert.
Noch einen schönen Abend.
Gruß
Oisse

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige