das Thema Daten aus einer geschlossenen Excel-Datei auslesen wurde hier ja schon vielfach besprochen.
Ich hab sowas auch schon mit der oft zitierten Funktion GetDataClosedWB() realisiert.
Als Makroaufruf über eine Schaltfläche klappt das auch hervorragend.
Mittlerweile arbeite ich jedoch viel mit Tabellen und Namen. Innerhalb von Tabellen hab ich mit der GetDataClosedWB() so meine Schwierigkeiten. Eigentlich möchte ich die Daten nicht per Makroaufruf einlesen sondern mit einem Aufruf direkt aus einer Zelle innerhalb der Tabelle.
Da GetDataClosedWB() hier nicht funktioniert hab ich mir im Forum einige Beispiele mit ExecuteExcel4Macro() angesehen und nachgebaut. als Makroaufruf (S_Zelle_auslesen) funktioniert das auch tadellos, als Funktionsaufruf (PF_Zelle_auslesen) aus der Zelle allerdings nicht, obwohl der Adress-String für ExecuteExcel4Macro() in beiden Fällen identisch ist.
Kann mir jemand sagen, wo mein Denkfehler liegt ?
Sub S_Zelle_auslesen()
Dim Adresse As String
Dim Zellbezug As String
Dim Ergebnis As String
Dim Pfad As String
Dim Datei As String
Dim Register As String
Dim Zeile As Integer
Dim Spalte As Integer
Pfad = "c:\temp\Test\Quelldateien\"
Datei = "test1.xlsx"
Register = "Werte"
Zeile = 1
Spalte = 1
Zellbezug = Cells(Zeile, Spalte).Address(ReferenceStyle:=xlR1C1)
Adresse = "'" & Pfad & "[" & Datei & "]" & Register & "'!" & Zellbezug
Ergebnis = ExecuteExcel4Macro(Adresse)
Cells(18, 2).Value = Ergebnis
MsgBox ("Wert der Zelle T14: " & Ergebnis)
End Sub
Aufruf der Function in einer Zelle mit =PF_Zelle_auslesen("c:\temp\Test\Quelldateien\";"test1.xlsx";"Werte";1;1)
Public Function PF_Zelle_auslesen(Pfad As String, Datei As String, Register As String, Zeile As _
Integer, Spalte As Integer) As String
Dim Adresse As String
Dim Zellbezug As String
Dim Ergebnis As String
Zellbezug = Cells(Zeile, Spalte).Address(ReferenceStyle:=xlR1C1)
Adresse = "'" & Pfad & "[" & Datei & "]" & Register & "'!" & Zellbezug
Ergebnis = ExecuteExcel4Macro(Adresse)
PF_Zelle_auslesen = Ergebnis
End Function
Mein Ziel am Ende ist mit PowerQuery ein Verzeichnis (in eine Tabelle) einzulesen und für jede gefundene Excel Datei bestimmte Werte auszulesen und in die Tabelle zu schreiben.
Das Sahnehäubchen wäre dann noch, wenn man die auszulesenden Zellen nicht mit Zeile/Spalte sondern mit Namen ansprechen könnte, aber erst einmal muss ich die Basics hinkriegen
Eine Beispielexcel dafür hänge ich an.
https://www.herber.de/bbs/user/137063.xlsm
Gruß
Markus