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

Daten mit VBA konsolidieren

Daten mit VBA konsolidieren
02.04.2004 04:01:35
Ulf
Hallo,
ich habe 2 Tabellen, die mit dem gleichen Aufbau auf zwei Servern zur verfügung gestellt werden. Ich möchte nun folgendes erreichen.
Die Daten sollen in einer dritten Mappe konsolidiert werden. Hierbei soll der User vorher über eine Inputbox aufgefordert werden, die Start und Endzeile einzugeben.
Beispiel: (Alle Tabellen habe den selben Aufbau)
Tabelle1: Startreihe 1, Endreihe 10
Tabelle2: Startreihe 2, Endreihe 5
In Tabelle 3 sollen dann alle Werte untereinander in Zeilen gelistet werden.
Danke für jeden Tipp
Gruß
Ulf

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten mit VBA konsolidieren
02.04.2004 22:42:39
Oberschlumpf
Hallo Ulf
Versuch es mal so.
Voraussetzung:
- Der folgende Code muss in Tabelle 3 eingefügt werden.
- Du musst für \\NETZWERKPFAD den richtigen Pfad eintragen und für DATEINAME1 und DATEINAME2 den jeweils richtigen Dateinamen


Sub Konsilidieren()
    Dim iAnfang1 As Integer, iEnde1 As Integer, iAnfang2 As Integer, iEnde2 As Integer
    
    Application.ScreenUpdating = False
    
    'die Start- und Endwerte für Tabelle1 und 2 werden durch Inputbox vom Anwender erwartet
    iAnfang1 = InputBox("Geben Sie bitte für die erste Tabelle die Startzeile ein.")
    iEnde1 = InputBox("Geben Sie bitte für die erste Tabelle die Endzeile ein.")
    iAnfang2 = InputBox("Geben Sie bitte für die zweite Tabelle die Startzeile ein.")
    iEnde2 = InputBox("Geben Sie bitte für die zweite Tabelle die Endzeile ein.")
    
    'Tabelle 1 und 2 werden geöffnet
    'Du musst für \\NETZWERKPFAD den richtigen Pfad eintragen und für DATEINAME1 und DATEINAME2 den jeweils richtigen Dateinamen
    Workbooks.Open "\\NETZWERKPFAD\DATEINAME1.xls"
    Workbooks.Open "\\NETZWERKPFAD\DATEINAME12.xls"
    Workbooks(1).Activate
    
    'die angegebenen Zeilen für Tabelle 1 werden ausgewählt, kopiert und in Tabelle 3 eingetragen
    Workbooks(2).Sheets(1).Rows(iAnfang1 & ":" & iEnde1).Copy
    Range("A1").Select
    ActiveSheet.Paste
    
    'die angegebenen Zeilen für Tabelle 2 werden ausgewählt, kopiert und in Tabelle 3 eingetragen
    Workbooks(3).Sheets(1).Rows(iAnfang2 & ":" & iEnde2).Copy
    Range("A" & iEnde1 + 1).Select
    ActiveSheet.Paste
    
    Application.CutCopyMode = False
    Range("A1").Select
    'Tabelle 1 und 2 werden ohne zu speichern wieder geschlossen
    Workbooks(1).Close savechanges:=False
    Workbooks(2).Close savechanges:=False
    Application.ScreenUpdating = True
    
End Sub


     Code eingefügt mit Syntaxhighlighter 2.5

Mit Hilfe dieses Codes werden alle gewünschten Zeilen von der ersten bis zur letztmöglichen Zelle in Tabelle 3 eingefügt.
Diese Variante ist zwar möglich aber nicht sehr elegant.
Eine saubere Lösung wäre es, wenn zusätzlich zur Start- und Endzeile auch noch die Start- und Endspalte, in der sich Daten befinden, mit angegeben wird.
Da Du aber nur Start- und Endzeile in Deiner Frage angibst, kann natürlich der Spaltenbereich nicht berücksichtigt werden.
Konnte ich Dir mit diesem Beispiel helfen?
Ciao
Thorsten
Anzeige
AW: Daten mit VBA konsolidieren
06.04.2004 02:35:54
Ulf
Hallo Thorsten
vielen Dank für den Tipp. Ich habe alles genauso gemacht, wie du geschrieben hast, es tritt allerdings immer wieder ein fehler auf. "1004 Objekt- oder anwedungsorientiert". Habe ich vielleicht irgendetwas falsch verstanden?
Bisher habe ich:
1 Datei angelegt und in Tabelle1 Zeile 1-3 gefüllt
1 weitere Datei angelegt und in Tabelle1 Zeile 1-3 ebenfalls gefüllt
1 dritte Datei angelegt, den Code in Tabelle3 kopiert und das VBA ausgeführt und dabei natürlich sichergestellt, dass alle Pfad- und Dateiangaben stimmen.
Danke für eine Rückmeldung
Ulf
AW: Daten mit VBA konsolidieren
06.04.2004 02:55:35
Ulf
Hallo Thorsten,
die Fehlermeldung konnte ich beseitigen. Es taucht aber ein anderes Problem auf. Nach der Beschreibung deines VBA werden Tabelle 1, Sheet 1 und Tabelle 2 Sheet 1 geöffnet, die Daten kopiert, in Tabelle 3 kopiert (die sich bei mir in einer anderen Mappe befindet, was aber doch kein Problem sein dürfte, da die Pfade der Quelldateien angegeben sind, oder?), eingefügt und am Ende Tabelle1&2 geschlossen. Bei mir passiert aktuelle folgendes.
Ich habe das VBA einer Schaltfläche zugewiesen. Bei Aktivierung werden die Inputvoxen korrekt abgefragt, die Tabellen aufgerufen und das war es. Soll heißen: Es erfolgt kein Datenübertrag und die Workbooks werden auch nicht geschlossen. Dafür wird aber das Workbook geschlossen, in welchem in Tabelle 3 eigentlich die Daten erscheinen sollten. Ich hänge mal alle drei mit an.

Die Datei https://www.herber.de/bbs/user/4986.xls wurde aus Datenschutzgründen gelöscht

(Das ist die Auswertung/Pfadangaben habe ich rausgenommen und durch xxx ersetzt, sind bei mir natürlich richtig enthalten)
Datenquelle 1: https://www.herber.de/bbs/user/4984.xls
Datenquelle 2: https://www.herber.de/bbs/user/4985.xls
Danke für ein Feedback
Ulf
Anzeige
AW: Daten mit VBA konsolidieren
06.04.2004 09:12:50
Oberschlumpf
Hi Ulf
Ich habe mit Deinen Bsp-Dateien den Code getestet, und es traten in den folgenden Zeilen Fehler auf:
1. fehlerhafte Zeile (von Dir geändert):
Workbooks(3).Sheets(2).Rows(iAnfang2 & ":" & iEnde2).Copy
Excel konnte Sheets(2) nicht "finden", da in der Bsp-Quelldatei nur ein Tabellenblatt vorhanden ist. Sheets(2) geändert in Sheets(1) löste dieses Problem.
Wenn in Deiner Original-Quelldatei tatsächlich ein 2. Tabellenblatt vorhanden ist, in dem sich DIE Daten befinden, die Du in Tabelle 3 einfügen willst, dann musst Du Sheets(1) natürlich wieder in Sheets(2) ändern.
2. fehlerhafte Zeile
Workbooks(1).Close savechanges:=False
Tja, diese Zeile kam von mir. Warum ich diesen Fehler beim Testen nicht bemerkte, weiß ich nicht.
Mit dieser Befehlszeile wird veranlasst, dass DIE Datei geschlossen wird, in der sich die zusammengeführten Daten und eben der VBA-Code befinden, was ja NICHT passieren sollte.
Und weil eben die Datei geschlossen wird, werden alle nachfolgenden Befehlszeilen NICHT mehr ausgeführt. Ich versteh es immer noch nicht, warum ich diesen Fehler nicht bemerkte ??????
Richtig lautet auch DIESE Zeile
Workbooks(3).Close savechanges:=False
Zuerst wird die zweite Datentabelle geschlossen (Workbooks(3)) und dann die erset Datentabelle (Workbooks(2))
So, und um nun alle Missverständnisse zu vermeiden ;-), lade ich die Dateien, wie sie bei mir funktionieren, auch auf den Server.
https://www.herber.de/bbs/user/4989.xls "Tabelle 3" mit VBA-Code
https://www.herber.de/bbs/user/4990.xls 1. Datentabelle
https://www.herber.de/bbs/user/4991.xls 2. Datentabelle
Pfade & Dateinamen musst Du natürlich wieder anpassen.
Nun bin ICH auf Dein Feedback neugierig :-)
Ciao
Thorsten
Anzeige
AW: Daten mit VBA konsolidieren
06.04.2004 10:26:28
Ulf
Hi Thorsten,
besten Dank für dein enorm ausführliches Feedback. Sorry, ich hätte dir natürlich sagen können, dass da noch ein zweites Tabellenblatt ist :-) Insofern war meine Änderung schon richtig. Anyway, es funktioniert jedenfalls alles bestens.
Vielen Dank. Jetzt kann ich an den anderen Baustellen weiter machen
Gruß
Ulf
isch liebe dat,wenn (m)ein Plan funktioniert:-)o.T
06.04.2004 12:54:34
Oberschlumpf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige