Anzeige
Archiv - Navigation
1424to1428
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 zusammenfügen

Daten zusammenfügen
03.05.2015 13:07:59
Thomas

Hallo,
ich möchte gern die Tabellen aus einer bestimmten auszuwählenden Exceldatei in meine Ausgangsdatei einfügen. Dies klappt schon mal. Nun hat aber die Quelldatei mehrere Tabellenblätter. Das Problem ich muss daraus in der Zieltabelle Blatt Temp eine zusammenhängende Tabelle machen. Ich möchte also alle vorhandenen Tabellenblätter aus der Quelltabelle in die Zieldatei im Tabellenblatt Temp nebeneinander ( ohne leerspalte ) zusammenfügen.
In den Beispieldatein befinden sich die beiden Dateien.
Zur zeit hole ich mir mit dem untenstehenden Makro das erste Tabellenblatt in die Zieltabelle.( ich hoffe ich verwirre euch nicht mit meiner Erklärung.
Könnt ihr mir bei meinen Abenteuer helfen?
Liebe grüsse thomas
https://www.herber.de/bbs/user/97432.xlsm
https://www.herber.de/bbs/user/97434.xls

Sub Import_mit_Dialog()
Dim Quelle As Object, Ziel As Object
Dim Datei As String
Dim r As Range
Dim anz As Long
Dim c_ges As Long
Dim col As New Collection
On Error GoTo Fehler
'Dialog "Datei öffnen" anzeigen
Datei = Application.GetOpenFilename("Excel-Dateien(*.xls),*xls")
'Abbrechen falls keine Datei ausgewählt
If Datei = "Falsch" Then
MsgBox "keine Datei ausgewählt", , "Abbruch"
Exit Sub
End If
'MsgBox "Ausgewählte Datei: " & Datei, , ""
'Ausgewählte Datei öffnen
Workbooks.Open Filename:=Datei
Set Quelle = ActiveWorkbook.Worksheets(1)  '  bedeutet das erste Blatt der Datei
Set Ziel = ThisWorkbook.Worksheets("temp")
'kopieren und einfügen
Quelle.UsedRange.Copy Ziel.Cells(1, 1)
'Sheets("temp").Select
ActiveWorkbook.Close
'Speicher freigeben
Set Quelle = Nothing
Set Ziel = Nothing
Exit Sub
Fehler:
Set Quelle = Nothing
Set Ziel = Nothing
MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
& "Beschreibung: " & Err.Description _
, vbCritical, "Fehler"
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten zusammenfügen
03.05.2015 14:16:22
fcs
Hallo Thomas,
mit den folgenden Anpassungen/Ergänzungen werden die Inhalte aller Tabellenblätter in der Quelldatei i das Zielblatt nebeneinander eingefügt.
Gruß
Franz
Sub Import_mit_Dialog()
Dim wkbQuelle As Workbook, Quelle As Worksheet
Dim Ziel As Object, Spalte_Z As Long
Dim Datei As Variant
On Error GoTo Fehler
'Dialog "Datei öffnen" anzeigen
Datei = Application.GetOpenFilename("Excel-Dateien(*.xls),*xls")
'Abbrechen falls keine Datei ausgewählt
If Datei = False Then
MsgBox "keine Datei ausgewählt", , "Abbruch"
Exit Sub
End If
'MsgBox "Ausgewählte Datei: " & Datei, , ""
'Zieltabelle setzen
Set Ziel = ThisWorkbook.Worksheets("temp")
Spalte_Z = 1 '1. Einfügespalte
'Ausgewählte Datei öffnen
Set wkbQuelle = Workbooks.Open(Filename:=Datei, ReadOnly:=True)
For Each Quelle In ActiveWorkbook.Worksheets
'kopieren und einfügen
Quelle.UsedRange.Copy Ziel.Cells(1, Spalte_Z)
Spalte_Z = Spalte_Z + Quelle.UsedRange.Columns.Count
Next
wkbQuelle.Close savechanges:=False
'Speicher freigeben
Set Quelle = Nothing
Set Ziel = Nothing
Exit Sub
Fehler:
Set Quelle = Nothing
Set Ziel = Nothing
MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
& "Beschreibung: " & Err.Description _
, vbCritical, "Fehler"
End Sub

Anzeige
klappt aber habe was vergessen
03.05.2015 18:16:10
Thomas
Hallo Franz,
was würde ich nur ohne dich machen dies ist wieder mal ein riesiges Macro. Nur leider habe ich nicht gesagt das ich die Nr. Spalte und die Namensspalte nur aus dem ersten Tabellenblatt benötige so zu sagen aus den anderen Tabellen benötige ich nicht die spalten A und B. Ich benötige in der 3. Zeile ein durchgängiges Datum. Sorry ich hatte auch gedacht das ich dies dann mit den Formeln überspringen kann, aber ich schaffe es nicht. Bekommst Du dies mit dem Macro gelöst?
Liebe grüsse Thomas

AW: klappt aber habe was vergessen
04.05.2015 08:37:19
fcs
Hallo Thomas,
es ist kein Problem, ab dem 2. Blatt die Spalten A und B wegzulassen.
Die Zeilen in den Blätter sind aber nicht identisch nummeriert und es gibt in den Spalten A+B verbundene Zeilen - zumindest in der Beispieldatei.
Man müsste es anders angehen.
1. verbunden Zellen aufheben und mit Werten auffüllen
2. Daten umgruppieren in 4 Spalten Nr|Personal|Datum|Wert
3. Daten in eine Liste zusammenkopieren
4. Daten in die gewünschte Form umbauen
1. Zeile Nummer|Personal|Datumswerte
Darunter dann die Daten
Diese Form der Auswertung kann man z.B. auch per Pivotbericht machen.
Gruß
Franz

Anzeige
AW: klappt aber habe was vergessen
05.05.2015 00:58:02
Thomas
Hallo Franz,
es ist mir ein wenig peinlich den ich wollte dieses Problem stück für stück lösen aber dies sollte ich mir vielleicht mal abgewöhnen. das Projekt ist ein wenig grösser. Ich habe Dateien aus einem anderem Programm die sehen so aus wie die Beispiel- Datei. diese Datei bereite ich mit dem untenstehenden macro Leerzeilen entfernen ( Call Leerzeilenlöschen PS diesen Trick habe ich von Dir abgeschaut), auf so das ich nur noch eine Zeile je Name habe. ( in den Zeilen wo noch eine verbundene Zeile mit dran hängt benötige ich nur den oberen Teil). Nach dem aufbereiten kopiere ich die Tabelle temp in meine richte Vorlage rein. Eine weitere Tabelle enthält Verknüpfungen zu dieser Datei dies sind dann Formeln die bestimmte Sachen wie z.B. Frei von bis finden. Weiter geht es dann mit einem Seriendruckmacro um Formulare zu drucken.
Da dieses dumme Export Programm jeden Monat einzeln ablegt muss ich irgendwie diese Daten zusammen bringen. Hier ist eigentlich wichtig das die Nr. Spalte z.b 11 aus Zeile 4 auch mit der Nr. 11 aus den anderen Blättern eine Zeile bilden. Aber ich habe so ca. 100 Test gefahren diese sind immer die selben Zeilennummer. So das ich eigentlich Nur noch die Spalten a und b aus den andern Blättern loswerden muss. OH OH Du hast recht wenn ein neuer Name im zweiten Monat dazukommt habe ich Datensalat. Was mache ich nun? Mit pivat? Das Endprodukt ist ein Formular als Seriendruck ( was auch alles schon funktioniert). Nur das Monatsübergreifende nicht. Kann man das zeilenproblem mit VBA lösen?Fals nicht Kannst Du mir trotzdem die zwei Spalten wegmachen? solange kein neuer Name mitten im Quartal dazukommt ist ja alles ok.
Besten dank schon mal für deine viele Mühe.
Liebe Grüsse Thomas
PS: was Hajo meinte weis ich nicht so richtig
Sub Leerzeilenlöschen()
'   Leerzeilen löschen einschließlich der Zeilen die entstehen wenn Zeilen am ende
'   gelöscht werden, auch Leerzeilen in der Tabelle werden gelöscht
'   von Wolf.W.Radzinski
'   es wurden nicht alle Leerzeilen in einer Datei erkannt
'   darum Ergänzung
On Error Resume Next
Dim r As Range
Dim anz As Long
Dim c_ges As Long
Dim col As New Collection
c_ges = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1
For Each r In ActiveSheet.UsedRange.EntireRow
anz = 0
'       ******** Hajo.Ziplies@web.de
Dim i As Byte
Dim L As Byte
L = 0
For i = 1 To 2   ' hier wird geprüft ob spalte 1 bis zwei leer sind
If Cells(r.Row, i) <> "" Then
L = 1
Exit For
End If
Next i
If L = 0 Then col.Add r
'        anz = r.SpecialCells(xlCellTypeBlanks).Count
'        If anz >= c_ges Then col.Add r
Next
For Each r In col
r.Delete
Next
End Sub

Anzeige
AW: klappt aber habe was vergessen
05.05.2015 12:53:46
fcs
Hallo Thomas,
es ist mir ein wenig peinlich den ich wollte dieses Problem stück für stück lösen
Dies ist ja auch der richtige Ansatz - ein größes Projekt in Teilprojekte zerlegen. Man muss halt nur aufpassen, dass man die Teilprojekte richtig anlegt und hier bei Fragen am passenden Stand der Dateien ansetzt.
Nachfolgend zwei Text-Dateien mit Makros. Ich hab dabei das Löschen der Leerzeilen integriert.
In dieser Textdatei ist das Makro angepasst, so dass ab dem 2. Blatt der Block ab Spalte C kopiert wird - mit dem Risiko, dass neue/nicht mehr vorhanden Nr. in einem Folgemonat Probleme machen.
https://www.herber.de/bbs/user/97469.txt
In dieser Textdatei hab ich das Makro erweitert, so dass beim 1. Monat der komplette Datenbereich inkl. Spalten A:B kopiert wird. Bei den Folgeblättern wird die Quelle zeilenweise abgearbeitet und dabei die Nr. im Blatt "temp" gesucht und die Daten in die jeweils gefundene Zeile kopiert. Ist die Nr. noch nicht vorhanden werden Nr. und Personal + Daten ans Ende der Liste kopiert.
https://www.herber.de/bbs/user/97470.txt
Gruß
Franz

Anzeige
AW: klappt aber habe was vergessen
06.05.2015 00:53:26
Thomas
Hallo Franz,
wieder mal hast Du mir den H... gerettet. Mein Projekt in das schon viel arbeit gesteckt habe ich ohne Dich nicht nutzen können. Vielen Dank dafür. Ich habe es getestet und es funktioniert super. Ich musste nur noch vorher die Temp mit
Sheets("temp").Select
Cells.Select
Selection.ClearContents
Selection.Delete Shift:=xlUp
Range("B7").Select
Sheets("Seriendruck").Select
löschen und es schurrt super klasse. Auch ein neuen Namen mitten im Quartal brauche ich nicht mehr zu fürchten. Selbst dann nicht wenn es Ihn nur ein Monat gibt. Und es funktioniert in einer Geschwindigkeit die man nicht mal merkt. ( Hier hatte ich ein paar befürchtungen Da schon soviel Formeln in der Datei sind) Aber es klappt.
vielen vielen Dank für alles.
Liebe Grüsse Thomas

Anzeige
AW: Daten zusammenfügen
03.05.2015 15:08:41
Hajo_Zi
lese FAQ
Zu Crossposting lies diese Seite Hajo-Excel.de
Durch Crosspostuing werden mehrere Gruppen von Leuten mit dem gleichen Thema befasst, ohne dass sie voneinander wissen.
Naturgemäß laufen dann die Antworten, die im einen Forum "zu spät" gegeben wurden, ins Leere und bleiben ohne Resonanz.
Es reicht also, zunächst in einem Forum zu posten - wenn die Antworten dann unbefriedigend sein sollten, steht es einem anschließend immer noch offen, ein anderes Forum zu Rate zu ziehen.
Ich mache keine Werbung für andere Foren und verzichte darum auf den Link.

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige