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

Zugriff auf andere Dateien, ohne diese zu öffnen

Zugriff auf andere Dateien, ohne diese zu öffnen
12.05.2013 08:17:23
Hartmut
Hallo zusammen,
trage gerade die Daten aus ca. 50-80 Excel-Dateien (xls, Excel vor 2007) zusammen (Ziel ist, eine konsolidierte Datentabelle über den Status der Einträge zu erhalten).
Aktuell erfolgt der Zugriff pro Zelle über einen zusammengesetzten String, der via Indirekt den Wert ausgibt. Das erfordert aber, dass alle Dateien zuerst geöffnet werden (macht aktuell eine VBA-Schleife).
# Das Problem:
Das Öffnen der Dateien dauert bereits einige Zeit und Excel bekommt danach eine etwas zähe Performance. Schlimmer ist, dass alle Dateien irgendwann wieder geöffnet werden müssen. Und da fragt Word 2010 bei jeder Datei, ob die Änderungen gesichert werden sollen. Das dauert … oder ich schieße den Excel-Prozess manuell ab. Ein Öffnen als "ReadOnly:=True" hilft da nicht weiter.
# Meine Frage ist:
Gibt es einen performanteren Weg, Dateien zu öffnen (z. B. im Backend, ohne diese selbst anzuzeigen)? Oder gibt es einen grundsätzlich besseren Weg?
Herzlichen Dank für jede Hilfe!
--
Viele Grüße,
Hartmut Scheele

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zugriff auf andere Dateien, ohne diese zu öffnen
13.05.2013 19:51:47
Beverly
Hi Hartmut,
du kannst den Zellbezug per Formel mittels VBA eintragen, ohne die anderen Arbeitsmappen öffnen zu müssen - nach diesem Prinzip:
Sub daten_uebernehmen()
Dim strFile As String
Dim strPath As String
Dim loZeileZielmappe As Integer
Application.ScreenUpdating = False
strPath = "C:\Test\"               ' Pfad bitte anpassen!
strFile = Dir(strPath & "*.xls")
Worksheets.Add after:=Worksheets(Worksheets.Count)
loZeileZielmappe = 1
Do While strFile  ""
If strFile  ThisWorkbook.Name Then
Cells(loZeileZielmappe, 1).Formula = _
"='" & strPath & "[" & strFile & "]" & "Tabelle1" & "'!A1"
Cells(loZeileZielmappe, 2).Formula = _
"='" & strPath & "[" & strFile & "]" & "Tabelle1" & "'!D1"
loZeileZielmappe = loZeileZielmappe + 1
End If
strFile = Dir()
Loop
' am Schluss alles in Werte umwandeln falls erforderlich
'    Range("A1:B" & loZeileZielmappe).Copy
'    Range("A1:B" & loZeileZielmappe).PasteSpecial Paste:=xlPasteValues
'    Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Hier werden Bezüge zu allen Zellen A1 und D1 der Tabelle1 jeder (geschlossenen) Arbeitsmappe hergestellt und fortlaufend in Spalte A und B untereinander aufgelistet.


Anzeige
AW: Zugriff auf andere Dateien, ohne diese zu öffnen
14.05.2013 09:53:21
Hartmut
Hallo zusammen,
herzlichen Dank für die durchweg sehr hilfreichen Antworten.
Ich habe verstanden, dass ein INDIREKT-Zugriff mit einem VBA-Konstrukt ersetzt werden sollte. Jede Änderung in den Quelldateien muss einen manuell angestoßenes Update nach sich ziehen.
Die Sub daten_uebernehmen() von Karin kann ich daher "Out-of-the-Box" übernehmen. Klasse! Und schnell ist das ... mannomann ;-)
--
Viele Grüße,
Hartmut

AW: Zugriff auf andere Dateien, ohne diese zu öffnen
12.05.2013 09:38:41
ransi
Hallo
Wenn du sowieso mit VBA dran bist, versuch mal folgendes:
Erstelle eine neue Excelapplication.
In der schaltest du alle Performancebremsen aus:
Automatische Berechnung
Speichern vor dem Schließen
Bildschirmaktualisierung
Ereignißmakros
Verküpfungen mit anderen Mappen aktualisieren.
Dann in einer Schleife die Mappen öffnen, die Daten rausziehen und die Mappe wieder schließen.
Alternativ:
Die =Indirekt() Formel rauschmeißen und die Formeln mit Stringoperationen zusammenpfriemeln und direkt mit VBA in die Zellen schreiben.
Sheets("Tabelle1").Range("A1").FormulaLocal = "='C:\Users\Test\[Mapp1.xls]Tabelle1'!$A$1"

ransi
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige