wie meine Recherche in diesem Forum ergeben hat, ist das Thema Zugriff auf geschlossene xls-Dateien ja nicht neu. Die beste Lösung die ich soweit gefunden habe ist sicher den meisten bekannt:
Option Explicit
Sub TestGetValue()
Dim p As String
Dim f As String
Dim s As String
Dim r As String
p = "D:\"
f = "Test.xls"
s = "Tabelle1"
r = "A1"
MsgBox GetValue(p, f, s, r)
Worksheets("Tabelle1").Range("A1") = GetValue(p, f, s, r)
End Sub
Private Function GetValue(path, file, sheet, ref)
' 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).Range("A1").Address(, , xlR1C1)
' Execute an XLM macro
GetValue = ExecuteExcel4Macro(arg)
End Function
Wenn ich eine Beispieltabelle anlege, kann ich über die Sub TestGetValue auch die Daten auslesen die ich möchte (in dem Beispiel zum Beispiel der Wert 200). TestGetValue ruft nur die Funktion GetValue auf und übergibt die Parameter.
Ich habe versucht, die Funktion GetValue direkt als Excel-Funktion in eine Zelle einzugeben
=getvalue(d:\;Test.xls;Tabelle1;A1)
Im Gegensatz zur Sub TestGetValue erhalte ich als Ergebnis der Funktion nur die Fehlermeldung #WERT. Kann mir jemand erklären, ob und wie es geht. Die Lösung über ein Makro ist für mein Ziel ziemlich aufwändig und kompliziert.
Danke im Voraus
MHofer