Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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

Anzeige

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

Anzeige
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

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zugriff auf andere Dateien in Excel, ohne sie zu öffnen


Schritt-für-Schritt-Anleitung

Um auf Daten aus einer anderen Excel-Datei zuzugreifen, ohne diese zu öffnen, kannst Du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:

    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
       Application.ScreenUpdating = True
    End Sub
  4. Passe den Pfad an, um auf den Speicherort Deiner Dateien zuzugreifen.

  5. Führe das Makro aus, um die gewünschten Daten in die aktuelle Arbeitsmappe zu importieren.


Häufige Fehler und Lösungen

  • Excel Verweis auf andere Datei funktioniert nicht: Stelle sicher, dass der Pfad und der Dateiname korrekt sind. Achte darauf, dass die Datei nicht umbenannt oder verschoben wurde.

  • Excel Daten aus geschlossener Datei auslesen ohne VBA: Diese Methode ist nicht möglich; VBA ist erforderlich, um Daten aus geschlossenen Dateien zu holen.

  • Indirekt-Zugriff funktioniert nicht: Der INDIREKT-Befehl benötigt, dass die Quelldatei geöffnet ist. Verwende stattdessen das oben genannte VBA-Skript.


Alternative Methoden

Wenn Du keine VBA verwenden möchtest, kannst Du auch folgende Methoden ausprobieren:

  • Power Query: Wenn Du Excel 2016 oder neuer verwendest, kannst Du Power Query nutzen, um Daten aus geschlossenen Excel-Dateien zu importieren. Gehe zu Daten > Daten abrufen > Aus Datei > Aus Arbeitsmappe.

  • Verknüpfungen: Setze eine Verknüpfung zu einer geschlossenen Datei, indem Du die Zelle in der aktuellen Arbeitsmappe auf die Zelle in der anderen Arbeitsmappe verweist. Dies funktioniert jedoch nur, wenn die Quelldatei geöffnet wird.


Praktische Beispiele

  1. Daten aus einer anderen Excel-Datei importieren: Verwende das VBA-Makro, um Daten aus mehreren Excel-Dateien in einen konsolidierten Bericht zu importieren.

  2. Werte aus geschlossenen Dateien übernehmen: Mit dem obigen VBA-Skript kannst Du spezifische Werte aus geschlossenen Dateien abfragen, ohne sie zu öffnen.

  3. Zellbezüge zu anderen Dateien: Erstelle dynamische Zellbezüge, die auf spezifische Zellen in anderen Arbeitsmappen zeigen, ohne diese zu öffnen.


Tipps für Profis

  • Optimierung der VBA-Leistung: Schalte die Bildschirmaktualisierung, automatische Berechnung und Ereignismakros während der Ausführung Deines Makros aus, um die Performance zu verbessern.

  • Verwende Application.Workbooks.Open: Wenn Du doch eine Datei öffnen musst, dann verwende diesen Befehl und stelle sicher, dass Du sie nach dem Kopieren der Daten wieder schließt.

  • Direkte Zellverweise: Nutze direkte Zellverweise in VBA, um die Notwendigkeit von INDIREKT zu vermeiden und die Performance zu steigern.


FAQ: Häufige Fragen

1. Wie kann ich Excel Daten aus einer anderen Datei importieren, ohne sie zu öffnen? Verwende VBA, um die gewünschten Daten zu importieren. Das oben stehende Beispiel zeigt, wie Du dies umsetzt.

2. Funktioniert der Verweis auf andere Dateien auch bei geschlossenen Dateien? Ja, mit VBA kannst Du Daten aus geschlossenen Dateien lesen, indem Du die entsprechenden Formeln direkt in die Zellen schreibst.

3. Was tun, wenn Excel Daten aus anderen Dateien auslesen nicht funktioniert? Überprüfe den Pfad und die Dateinamen auf Richtigkeit und stelle sicher, dass Du die richtige Syntax in Deinen Formeln verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige