Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Andere ungeöffnete Datei mit VBA ansprechen

Andere ungeöffnete Datei mit VBA ansprechen
02.11.2017 11:38:06
Florian
Hallo zusammen,
Ich möchte die Zelleninhalte verschiedener Exceldateien in einer Hauptexcel zusammenfassen.
Jede menge in einem "file" ist einer pos zugeordnet.
Im Besagter Hauptexcel möchte ich oben alle "file" im Ordner nebeinander aufgelistet haben und darunter die Werte passend zu den Positionen die in der Hauptexcel in der Spalte ganz links aufgereiht sind.
Der Code funktioniert jedoch nur, wenn die "file" geöffnet sind sonst gibt VBA die fehlermeldung: Index außerhalb des gültigen Bereichs aus.
Kann mit jemand einen Eleganten und Schnellen Lösungsvorschlag geben ohne alle Files öffnen zu müssen?
Code:

Sub DatenEinlesen()
Dim Dateiname As String, i As Integer
Dim pos As String, menge As Integer
Dim a As Integer
Dim such As Integer
Dim zeile As Integer
Range("AN2:XFD1413") = ""
Dateiname = Dir$("C:\Users\Name\Desktop\Neuer Ordner\*file*")
Do While Dateiname  ""
Range("AN9").Offset(0, i) = Dateiname
For a = 36 To 55
pos = Workbooks(Dateiname).Worksheets("Sheet1").Cells(a, 2)
menge = Workbooks(Dateiname).Worksheets("Sheet1").Cells(a, 23)
Workbooks("Hauptexcel.xlsm").Activate
If Not pos = "" Then
For such = 10 To 1413
If Cells(such, 3).Value = pos Then
zeile = Cells(such, 3).Row
Range("AN9").Offset(zeile - 9, i) = menge
End If
Next such
End If
Next a
i = i + 2
Dateiname = Dir$()
Loop
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Andere ungeöffnete Datei mit VBA ansprechen
02.11.2017 16:52:38
Hajo_Zi
trage eine Formel ein.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
Anzeige
AW: Andere ungeöffnete Datei mit VBA ansprechen
03.11.2017 12:15:11
Florian
Hallo,
danke für die Rasche Antwort.
Welche Formel kann alle Files in einem Ordner abfragen?
AW: Andere ungeöffnete Datei mit VBA ansprechen
03.11.2017 15:40:58
Hajo_Zi
ich würde mal vermuten
Range("AN9").Offset(zeile - 9, i).Formula = _
"C:\Users\Name\Desktop\Neuer Ordner\[" & Dateiname & "]Sheet1!" & Cells(a, 23).Address
für POS musst Du auch eine Formel in die eine Zelle eintragen.
Keine Ahnung ob Evalute da auch helfen würde.
Gruß Hajo
Anzeige
AW: Andere ungeöffnete Datei mit VBA ansprechen
03.11.2017 16:23:36
mmat
Hallo,
es gibt keinen Weg, irgendetwas aus einer Datei zu lesen, ohne sie irgendwie zu öffnen.
Am einfachsten geht's wohl mit deinem Makro, wenn zwei Zeilen ergänzt werden. Ich hab jeweils eine vorhandene Zeile wiederholt und dann eine neue dazugeschrieben (Schreibfehler möglich ...)
Range("AN9").Offset(0, i) = Dateiname 'diese Zeile hast du schon
workbooks.open ("C:\Users\Name\Desktop\Neuer Ordner\"+Dateiname)  ' eine neue Zeile
workbooks("Dateiname").Close false 'noch eine neue Zeile
Dateiname = Dir$() 'die Zeile gibt's auch schon

Anzeige
AW: Andere ungeöffnete Datei mit VBA ansprechen
06.11.2017 13:22:40
Florian
Hallo,
Danke hat mir sehr geholfen.
Habe jetzt nach ein paar Versuche die Lösung für das Problem gefunden.
Ich habe die Dateien als Objekte gespeichert und Aktiviert wenn ich sie brauche.
Außerdem darf man in der zweiten neuen Zeile von dir keine Gänsefüße machen.
Jedoch habe ich jetzt ein neues Problem es kommt jetzt beim automatisierten Öffnen der Files die Benachrichtigung zum Aktualisieren der Daten die in den "Files" verlinkt sind.
Kann man das irgendwie Automatisieren?
Richtiger Code:
Sub DatenEinlesen()
Dim Dateiname As Variant, i As Integer
Dim pos As String, menge As Integer
Dim a As Integer
Dim such As Integer
Dim zeile As Integer
Dim FirstBook As Object
Dim SecondBook As Object
'Geöffnete Datei als FirstB
Set FirstBook = ActiveWorkbook
'Alles im Zielbereich löschen
Range("AN2:XFD1413") = ""
'Erstes file im Ordner auswählen
Dateiname = Dir$("C:\Users\Name\Desktop\Neuer Ordner\*file*" & ".xlsx")
'Schleife solange es files im Ordner gibt
Do While Dateiname  ""
'Dateiname in die oberste Zeile schreiben
Range("AN9").Offset(0, i) = Dateiname
' Öffnet die Datei "Dateiname"
Workbooks.Open ("C:\Users\Name\Desktop\Neuer Ordner\" + Dateiname)
'Definieren des Files als SecondBook
Set SecondBook = ActiveWorkbook
'Bereich in dem die Positionen Stehen auslesen
For a = 36 To 55
pos = Workbooks(Dateiname).Worksheets("Vorlage_FAB").Cells(a, 2)
menge = Workbooks(Dateiname).Worksheets("Vorlage_FAB").Cells(a, 23)
If Not pos = "" Then
'Aktivieren der Hauptexcel
FirstBook.Activate
'Gleiche Position in der Hauptdatei suchen
For such = 10 To 1413
If Cells(such, 3).Value = pos Then
'Zeile Auslesen und in eine Variable schreiben
zeile = Cells(such, 3).Row
'Menge in die richtige Zeile schreiben
Range("AN9").Offset(zeile - 9, i) = menge
End If
Next such
End If
' Aktivieren des Files
SecondBook.Activate
Next a
'Spalte in der, der Dateiname steht um eins erhöhen
i = i + 1
Workbooks(Dateiname).Close False
'Nächste Datei auswählen
Dateiname = Dir$()
Loop
End Sub

Anzeige
AW: Andere ungeöffnete Datei mit VBA ansprechen
06.11.2017 13:28:10
Daniel
HI
schau dir mal in der Hilfe den WorkBook.Open-Befehl genauer an.
da gibt's neben dem Dateinamen noch weitere Parameter mit denen du angeben kannst, wie die Datei zu öffnen ist.
In deinem Fall wäre das wahrscheinlich der Parameter: UpdateLinks
wenn du hier eine Angabe machst, sollte keine Rückfrage mehr kommen.
(UpdateLinks:=True bzw UpdateLinks:=False, je nachdem ob aktualisert werden soll oder nicht)
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Andere ungeöffnete Datei mit VBA ansprechen


Schritt-für-Schritt-Anleitung

Um mit VBA Inhalte aus einer anderen, ungeöffneten Excel-Datei zu lesen, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf VBAProject (DeineDatei), gehe zu Einfügen und wähle Modul.
  3. Kopiere den folgenden Code:

    Sub DatenEinlesen()
       Dim Dateiname As Variant, i As Integer
       Dim pos As String, menge As Integer
       Dim a As Integer
       Dim such As Integer
       Dim zeile As Integer
       Dim FirstBook As Object
       Dim SecondBook As Object
    
       ' Geöffnete Datei als FirstBook
       Set FirstBook = ActiveWorkbook
       ' Alles im Zielbereich löschen
       Range("AN2:XFD1413") = ""
       ' Erstes file im Ordner auswählen
       Dateiname = Dir$("C:\Users\Name\Desktop\Neuer Ordner\*file*" & ".xlsx")
    
       ' Schleife solange es Files im Ordner gibt
       Do While Dateiname <> ""
           ' Dateiname in die oberste Zeile schreiben
           Range("AN9").Offset(0, i) = Dateiname
           ' Öffnet die Datei "Dateiname"
           Workbooks.Open ("C:\Users\Name\Desktop\Neuer Ordner\" + Dateiname)
           ' Definieren des Files als SecondBook
           Set SecondBook = ActiveWorkbook
    
           ' Bereich in dem die Positionen Stehen auslesen
           For a = 36 To 55
               pos = SecondBook.Worksheets("Sheet1").Cells(a, 2)
               menge = SecondBook.Worksheets("Sheet1").Cells(a, 23)
               If Not pos = "" Then
                   ' Aktivieren der Hauptdatei
                   FirstBook.Activate
                   ' Gleiche Position in der Hauptdatei suchen
                   For such = 10 To 1413
                       If Cells(such, 3).Value = pos Then
                           ' Zeile Auslesen und in eine Variable schreiben
                           zeile = Cells(such, 3).Row
                           ' Menge in die richtige Zeile schreiben
                           Range("AN9").Offset(zeile - 9, i) = menge
                       End If
                   Next such
               End If
           Next a
           ' Spalte in der, der Dateiname steht um eins erhöhen
           i = i + 1
           SecondBook.Close False
           ' Nächste Datei auswählen
           Dateiname = Dir$()
       Loop
    End Sub
  4. Führe das Makro aus:

    • Drücke F5 oder gehe zu Run und wähle Run Sub/UserForm.

Häufige Fehler und Lösungen

  • Fehler: "Index außerhalb des gültigen Bereichs"
    Dieser Fehler tritt auf, wenn die Datei nicht geöffnet ist. Stelle sicher, dass Du die Datei mit Workbooks.Open öffnest, bevor Du auf deren Inhalte zugreifst.

  • Fehler: "Dateiname nicht gefunden"
    Überprüfe den Pfad und die Dateinamen. Achte darauf, dass das Muster in Dir$ korrekt ist.

  • Benachrichtigung zum Aktualisieren der Daten
    Um die Rückfrage beim Öffnen der Dateien zu umgehen, kannst Du den Parameter UpdateLinks:=False beim Workbooks.Open Befehl hinzufügen.


Alternative Methoden

Falls Du keine VBA verwenden möchtest, kannst Du auch Formeln einsetzen, um Daten aus anderen Arbeitsmappen zu referenzieren. Zum Beispiel:

='C:\Users\Name\Desktop\Neuer Ordner\[Dateiname.xlsx]Sheet1'!A1

Denke daran, dass diese Methode nur funktioniert, wenn die Datei geöffnet ist.


Praktische Beispiele

Hier sind einige praktische Anwendungsszenarien:

  1. Zelleninhalte zusammenfassen: Du kannst die oben genannte VBA-Prozedur nutzen, um alle Zelleninhalte mehrerer Dateien in einer Hauptdatei zusammenzuführen.

  2. Datenanalyse: Mit VBA kannst Du große Datenmengen analysieren, ohne alle Dateien manuell zu öffnen und zu überprüfen.


Tipps für Profis

  • Nutze Option Explicit zu Beginn Deines VBA-Codes, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.

  • Experimentiere mit Workbook_Open und Workbook_Close Ereignissen, um die Automatisierung zu verbessern.

  • Verwende Application.ScreenUpdating = False, um die Bildschirmaktualisierung während der Ausführung Deines Codes zu deaktivieren. Das beschleunigt den Prozess erheblich.


FAQ: Häufige Fragen

1. Kann ich mit VBA auch Daten aus mehreren Dateien gleichzeitig abrufen?
Ja, Du kannst eine Schleife verwenden, um alle Dateien in einem Ordner nacheinander zu öffnen und die Daten zu extrahieren.

2. Wie kann ich verhindern, dass Excel beim Öffnen der Dateien nach Aktualisierungen fragt?
Füge beim Öffnen der Datei den Parameter UpdateLinks:=False hinzu, um diese Rückfrage zu vermeiden.

3. Welche Excel-Version benötige ich für VBA?
VBA ist in den meisten Excel-Versionen verfügbar, jedoch solltest Du sicherstellen, dass Du mindestens Excel 2003 oder neuer verwendest, um die oben genannten Funktionen zu nutzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige