Werte aus geschlossenen Excel-Dateien abfragen mit getvalue und ExecuteExcel4Macro
Schritt-für-Schritt-Anleitung
Um die Funktion getvalue zu erstellen, die es dir ermöglicht, Werte aus geschlossenen Excel-Dateien abzufragen, gehe wie folgt vor:
-
Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu starten.
-
Füge ein neues Modul hinzu, indem du im Projektfenster mit der rechten Maustaste auf "VBAProject" klickst und "Modul einfügen" wählst.
-
Kopiere den folgenden Code in das Modul:
Public Function getvalue(path As String, File As String, sheet As String, ref As String) As Variant
' retrieves a value from a closed workbook
Dim arg As String
' make sure the file exists
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & File) = "" Then
getvalue = "File not found"
Exit Function
End If
' create the argument
arg = "'" & path & "[" & File & "]" & sheet & "'!" & _
Range(ref).Address(, , xlR1C1)
' execute an xlm macro
getvalue = ExecuteExcel4Macro(arg)
End Function
-
Schließe den VBA-Editor und kehre zu deinem Excel-Arbeitsblatt zurück.
-
In einer Zelle kannst du nun die Funktion wie folgt verwenden:
=getvalue("G:\TEAM ABC\", "999999ABC.xls", "A", "F15")
Häufige Fehler und Lösungen
-
Fehler: #WERT!
- Ursache: Dies tritt auf, wenn die Referenzzelle (
ref) nicht korrekt angegeben ist oder der Wert nicht existiert.
- Lösung: Überprüfe, ob die Zellreferenz in der
getvalue-Funktion korrekt ist und ob der Wert in der angegebenen Zelle vorhanden ist.
-
Fehler: "File not found"
- Ursache: Der angegebene Dateipfad oder der Dateiname ist nicht korrekt.
- Lösung: Stelle sicher, dass der Pfad und der Dateiname in der
getvalue-Funktion korrekt eingegeben sind.
Alternative Methoden
Wenn die Verwendung von getvalue in einer Zelle nicht funktioniert, kannst du stattdessen die Funktion innerhalb eines Makros verwenden. Hier ein Beispiel:
Sub test()
Range("A1").Value = getvalue("G:\TEAM ABC\", "999999ABC.xls", "A", "F15")
End Sub
Führe das Makro aus, um den Wert in die Zelle A1 einzufügen.
Praktische Beispiele
Hier sind einige Beispiele, wie du die getvalue-Funktion in verschiedenen Szenarien verwenden kannst:
-
Beispiel 1: Wert aus einer anderen Datei abfragen
=getvalue("C:\Users\DeinName\Documents\", "Beispiel.xlsx", "Tabelle1", "A1")
-
Beispiel 2: Dynamische Abfrage basierend auf Zellinhalten
Angenommen, du hast den Pfad, Dateinamen und Blattnamen in den Zellen A1, B1 und C1:
=getvalue(A1, B1, C1, "D1")
Tipps für Profis
- Stelle sicher, dass die Pfade und Dateinamen keine Leerzeichen oder Sonderzeichen enthalten, die zu Problemen führen könnten.
- Überprüfe die Zugriffsrechte auf die Dateien, um sicherzustellen, dass du die Werte abrufen kannst.
- Wenn du häufig auf geschlossene Dateien zugreifen musst, erwäge, eine benannte Formel in Excel zu erstellen, die
getvalue verwendet.
FAQ: Häufige Fragen
1. Kann ich getvalue direkt in einer Excel-Zelle verwenden?
Ja, du kannst die Funktion in einer Zelle verwenden, jedoch kann es sein, dass du die Syntax oder die Referenzen anpassen musst.
2. Was ist der Unterschied zwischen getvalue und ExecuteExcel4Macro?
getvalue ist eine benutzerdefinierte Funktion, die ExecuteExcel4Macro verwendet, um Werte aus geschlossenen Arbeitsmappen abzurufen. ExecuteExcel4Macro ist eine integrierte Excel-Funktion, die bestimmte Excel 4.0-Makros ausführt.
3. Welche Excel-Versionen unterstützen diese Methode?
Die Methode funktioniert in den meisten modernen Excel-Versionen, die VBA unterstützen, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.