Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
688to692
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
688to692
688to692
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Eine Datei aus mehreren zusammenbauen

Eine Datei aus mehreren zusammenbauen
02.11.2005 10:40:41
Kristian
Hallo liebe Forum User,
ich habe neun kleine Dateien (keine Formeln, nur Werte) die untereinander gesetzt eine große Datei ergeben sollen.
Das Makro soll einfach die erste Datei öffnen, ab Zeile 5 bis Ende alles kopieren und in die große Datei setzen. Dann die nächste Datei öffnen, ab Zeile 5 bis Ende alles kopieren und in die große Datei untendrunter setzen. Dann die nächste Datei usw. Immer die Spalten der nächsten Datei in die große Datei untendrunter, also unter die letzte volle Zeile setzen.
Vielen Dank
Kristian

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

Betreff
Datum
Anwender
Anzeige
AW: Eine Datei aus mehreren zusammenbauen
02.11.2005 12:59:01
Rolf
Hallo Kristian,
ist die letzte Spalte (welche?) in allen Sheets gleich?
fG
Rolf
AW: Eine Datei aus mehreren zusammenbauen
03.11.2005 10:16:26
Kristian
Hallo Rolf,
hier mal das Makro:
Private Sub Workbook_Open()
Dim text As String
Workbooks.Open Filename:="G:\Prozessübersicht Customer Relationship Management.xls", UpdateLinks:=False, Notify:=False
Rows("5:5").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Prozesshaus LINCAS.xls").Activate
Sheets("Prozessübersicht LINCAS").Select
Rows("5:5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Workbooks("Prozessübersicht Customer Relationship Management.xls").Close

Workbooks.Open Filename:="G:\Prozessübersicht Supply Chain Management.xls", UpdateLinks:=False, Notify:=False
Rows("5:5").Select
Range(Selection, Selection.End(xlDown)).Select
text = Selection.Copy
Windows("Prozesshaus LINCAS.xls").Activate
Sheets("Prozessübersicht LINCAS").Select
Range("A" & Cells(Rows.Count, 1).End(xlUp).Row + 1).Value = text
ActiveSheet.Paste
Application.CutCopyMode = False
Workbooks("Prozessübersicht Supply Chain Management.xls").Close
usw.
Nun habe ich das Problem, dass der Text aus der zweiten Datei über den der ersten überschrieben werden soll. Er soll aber gleich unter den ersten eingefügt werden. Also in die nächste leere Spalte.
Gruß
Kristian
Anzeige
AW: Eine Datei aus mehreren zusammenbauen
03.11.2005 10:36:04
Rolf
Hallo Kristian,
versuch's mal hiermit
fG
Rolf
Option Explicit
Public WS As Worksheet
Public action$
'Startprozedur

Sub start_filehandle()
'(C) Rolf Beißner 10.2004
Dim verz$
verz = FolderGet("G:\") 'Defaultwert für das Verzeichnis, das AUSSCHLIESSLICH
'die abzuarbeitenden Dateien enthält
ChDir verz
action = "CopyArea"
Application.ScreenUpdating = False
Set WS = Sheets.Add
Call WorkFileList(verz)
End Sub

'Excel-Dateien öffnen

Sub WorkFileList(folderspec As String)
Dim exapp As Object, fs As Object, f As Object, fc As Object, fl As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set fc = f.Files
For Each fl In fc
If fl.Type = "Microsoft Excel-Arbeitsblatt" Then
'Set exapp = Workbooks.Open(folderspec & "\" & fl.Name)'Alternative zu Getobject
Set exapp = GetObject(folderspec & "\" & fl.Name)
Application.Run action, exapp 'ausgewählte Aktion starten
Call WinClose(fl.Name)
End If
Next
End Sub

'Schließprozedur

Sub WinClose(wind As String)
Windows(wind).Visible = True
Application.DisplayAlerts = False
Workbooks(wind).Close
End Sub

'Ordnerauswahl

Function FolderGet(Optional ByVal def = "")
Dim objShell As Object, objfolder As Object
Set objShell = CreateObject("Shell.Application")
Set objfolder = objShell.BrowseForFolder(0, "Bitte einen Ordner wählen", 0, def)
If objfolder Is Nothing Then End
FolderGet = objfolder.Self.Path
End Function

'Area kopieren

Sub CopyArea(qfile As Workbook)
Dim rz%, rq%
Dim zielbereich As Range, quellbereich As Range
rz = WS.Cells(65536, 1).End(xlUp).Row + 1
rq = qfile.Sheets(1).Cells(65536, 1).End(xlUp).Row
Set zielbereich = WS.Range("A" & rz)
Set quellbereich = qfile.Sheets(1).Range("A5:IV" & rq)
quellbereich.Copy zielbereich
End Sub

Anzeige
AW: Eine Datei aus mehreren zusammenbauen
03.11.2005 11:14:20
Kristian
Mensch Rolf, Du machst dir ja richtig Arbeit...sieht ziemlich professionell aus.
Nur verstehe ich leider nur Bahnhof. Das tut mir so leid.
Es ist eben so, daß ich den Code auch rechtfertigen muß, sprich kapieren sollte.
Klar sieht mein Code wohl ziemlich sch... aus, doch eigentlich funktioniert es, außer daß die Inhalte eben nicht untereinander eingefügt werden. Das ist alles, was ich noch klären muß. Das Makro soll einfach den kopierten Bereich unter den Letzten einfügen. Also immer schön untereinanderreihen.
Mal ganz simpel: Datei X ist leer. Die Dateien a, b und c beinhalten jeweils eine Zeile.
Wenn ich nun Datei X öffne, soll Die Zeile aus Datei a in X eingefügt werden, dann die Zeile aus Datei b in Datei X gleich darunter eingefügt werden, usw.
Hoffe Du verstehst mich und kannst mir helfen.
Schöne Grüße
Kristian
Anzeige
AW: Eine Datei aus mehreren zusammenbauen
03.11.2005 11:38:40
Rolf
Hallo Kristian,
du musst vor jedem Einfügen die neue
Zeilenposition im Gesamtsheet bestimmen -
in dem Codebeispiel passiert das im Makro "CopyArea".
fG
Rolf
AW: Eine Datei aus mehreren zusammenbauen
03.11.2005 11:44:50
Kristian
Danke, gerade ist es mir auch eingefallen. Es war in Datei X immer noch der ganze Bereich markiert. Ist klar, daß es immer versucht hat, den zu überschreiben. Jetzt geht´s nämlich nach dem Einfügen in die nächste leere Zeile, wartet dort und fügt dann den neuen Text ein. Klappt wunderbar!
Herzlichen Dank Rolf, Du hast mir sehr weitergeholfen!
Grüße aus München
Kristian
AW: Eine Datei aus mehreren zusammenbauen
03.11.2005 12:14:35
Kristian
Hallo an Alle,
ich habe noch eine kleine Bitte:
Wie wähle ich im Makro eine bestimmte Zelle aus, z.B. in Spalte A die Zelle mit Inhalt "Management"? Sprich hmhmhm.select?!?
Gruß
Kristian
Anzeige
Find
03.11.2005 18:41:13
Rolf
Hallo Kristian,
prima, dass es geklappt hat.
Die Zellauswahl geht z.B. so
Columns(1).Find("Management").Select
hG
Rolf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige