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

Datenaustausch zwischen Exceldateien

Datenaustausch zwischen Exceldateien
08.02.2008 16:45:00
Boris
Hi,
wie/womit kann man am besten die Daten eines Arbeitsblatts einer Datei 1.xls dynamisch mit einer anderen Datei 2.xls verknüpfen?
Beispiel: Die Datei "...Projekt XY/1 Objekte/Objekte.xls" enthält das Blatt "Objekte". In der Datei "...Projekt XY/2 Bericht/Bericht.xls" sollen nun diese Daten des Blattes "Objekte" eingefügt werden.
Anforderungen: Änderungen im Blatt Objekte der Datei Objekte.xls sollen sich in der Datei Bericht.xls automatisch aktualisieren. Änderungen der Struktur (Einfügen einer Spalte) sollen in der Zieldatei auch wirksam werden. Der Gesamtordner Projekt soll für andere Projekte kopiert werden können (Stichwort Pfadangabe).
Hintergrund: Alles in einer Datei zu rechnen/darzustellen geht nicht, da es zuviele Daten sind und Excel sich zu Tode rechnet. Deshalb habe ich einzelne Aufgabenbereiche auf verschiedene Dateien verteilt und muss im Moment die Daten manuell kopieren. Das ist jedoch ziemlich umständlich und sehr fehleranfällig.
Bisher habe ich ein wenig mit Query rumgespielt. Welche Möglichkeiten gibt es noch? VBA erscheint mir ein wenig zu statisch und langsam...?
Bin für jede Anregung dankbar, viele Grüße.

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

Betreff
Datum
Anwender
Anzeige
AW: Datenaustausch zwischen Exceldateien
08.02.2008 22:32:00
Heinz
Hi,
"...wie/womit kann man am besten die Daten eines Arbeitsblatts einer Datei 1.xls dynamisch mit einer anderen Datei 2.xls verknüpfen?..."
Das geht mit Formeln, mit denen du dich auf die entsprechende Datei/Blatt/Zellen beziehst.
Verwendung von Namen ist zu empfehlen, wenn Zeilen/Spalten eingefügt/gelöscht werden sollen.
Beim Level gibt es auch noch andere Auswahlmöglichkeiten oder hast du dich verklickt?
mfg Heinz

AW: Datenaustausch zwischen Exceldateien
08.02.2008 22:51:00
Boris
Habe mich nicht verklickt. Du hast meine Frage anscheinend nicht richtig verstanden oder ich habe mich nicht verständlich ausgedrückt. Es geht hier um Datenblätter, die teilweise 100 spalten x 10.000 zeilen enthalten und auch nicht nur um 2 Dateien. Wenn ich dies mit Formeln löse, dauert alleine das Öffnen und Updaten der Links einige Minuten. Und ein Kopieren des Projektordners ist auch nicht möglich, da die Links statisch sind (dies könnte man zwar per VBA anpassen, die Lösung erscheint mir aber nicht als sinnvoll).
Ich möchte Abbilder von diversen Arbeitsblättern verschiedener Dateien in einer Zieldatei darstellen, um mit diesen Daten weiterzurechnen.
Viele Grüße

Anzeige
AW: Datenaustausch zwischen Exceldateien
09.02.2008 12:25:14
Tino
Hallo,
hier mal eine Idee von mir.
Beispiel ist für zwei Dateien aufgebaut die sich im selben Ordner befinden (1.xls u. 2.xls)
Vieleicht bringt dich dies weiter.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call Lese_Extern
End Sub
Private Sub Workbook_Open()
Call Lese_Extern
End Sub
Sub Lese_Extern()
Dim myXL_Application As Object
Dim a As Byte
On Error GoTo Fehler: 'Fehler abfangen sonst könnte Datei offen bleiben
For a = 1 To 2
Set myXL_Application = CreateObject(Class:="Excel.Application")
myXL_Application.Workbooks.Open _
ThisWorkbook.Path & "\" & a & ".xls" 'Pfad und Name der Dateien
myXL_Application.WindowState = xlMinimized
myXL_Application.Visible = False
myXL_Application.Sheets(1).Cells.Copy
Sheets("Aus Tab " & a).Range("A1").PasteSpecial 'Zieltabelle
myXL_Application.Application.CutCopyMode = False
Application.DisplayAlerts = False
myXL_Application.Quit 'schliesen
Application.DisplayAlerts = True
Set myXL_Application = Nothing
Next a
Exit Sub
Fehler:
On Error Resume Next
Application.DisplayAlerts = False
myXL_Application.Quit 'schliesen
Set myXL_Application = Nothing
Application.DisplayAlerts = True
On Error GoTo 0
End Sub


Gruß
Tino

Anzeige
AW: Datenaustausch zwischen Exceldateien
09.02.2008 13:04:00
Tino
Hallo,
der erste Vorschlag von mir funktioniert nicht sauber, so geht’s besser.

Sub Lese_Extern()
Dim a As Byte
For a = 1 To 2
Workbooks.Open Filename:= _
ThisWorkbook.Path & "\" & a & ".xls"
ActiveWindow.Visible = False
Workbooks(a & ".xls").Sheets(1).Cells.Copy Workbooks("Test.xls").Sheets("Aus Tab " & a). _
Cells
Application.DisplayAlerts = False
Workbooks(a & ".xls").Close
Application.DisplayAlerts = False
Next a
End Sub


Gruß
Tino

AW: Datenaustausch zwischen Exceldateien
11.02.2008 09:55:57
Boris
Hi Tino,
das funktioniert, schonmal nicht schlecht:) Hierzu noch folgende Fragen:
1) mit .cells.copy werden alle 256*65536 Zellen pro Sheet kopiert? Wäre es dann nicht schneller, die letzte beschriebene Zelle zu ermitteln und von A1 bis zu dieser Zelle zu kopieren?
2) kopiert wird alles, also auch Formeln. Wie erreiche ich, dass nur Formate + Werte kopiert werden?
Gibt es noch andere Möglichkeiten, außer VBA?
Vielen Dank und viele Grüße...

Anzeige
AW: Datenaustausch zwischen Exceldateien
11.02.2008 20:22:11
Tino
Hallo,
so müsste es funktionieren.

Sub Lese_Extern()
Dim BerAd As String
Dim a As Byte
For a = 1 To 2
Workbooks.Open Filename:= _
ThisWorkbook.Path & "\" & a & ".xls"
ActiveWindow.Visible = False
BerAd = "A1:" & Application.Workbooks(a & ".xls").Sheets(1).Cells.SpecialCells( _
xlCellTypeLastCell).Address
Workbooks(a & ".xls").Sheets(1).Range(BerAd).Copy Workbooks("Test.xls").Sheets("Aus Tab " &  _
a). _
Range(BerAd)
Workbooks("Test.xls").Sheets("Aus Tab " & a).Range(BerAd).Value = _
Workbooks("Test.xls").Sheets("Aus Tab " & a).Range(BerAd).Value
Application.DisplayAlerts = False
Workbooks(a & ".xls").Close
Application.DisplayAlerts = False
Next a
End Sub


Gruß
Tino

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige