Clever-Excel-Forum

Normale Version: Dateiname aus Zelle auslesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend Zusammen,

ich bin relativ neu und stehe vor folgender Herausforderung:

Es gibt 2 Excel Dateien. Workbook1 und Workbook 2.

In Workbook1 wird ein Inhalt aus Workbook2 ausgelesen:

Code:
='/Users/ju/Excel/[Workbook2.xlsx]Sheet1'!$A$1


Soweit, sogut. Das funktioniert prima.

Jetzt möchte ich allerdings gerne in Workbook1 eine Zelle haben, in der ich den Namen der .xlsx Datei angeben kann und dieser dann entsprechend in der Formel geändert wird

Sprich:

Code:
='/Users/ju/Excel/["ZELLENINHALT".xlsx]Sheet1'!$A$1

Ich hoffe ihr versteht was ich meine? Sinn dahinter ist, dass ich später mehrere "Workbooks"2,3,4,...haben werde und dann nur noch in der Hauptdatei (Workbook1) angeben möchte, welcher Inhalt gerade geladen werden soll.

Ich freue mich auf Vorschläge.

VG
Servus jules,

Dein Vorhaben ist nicht ganz so einfach, wie man denken könnte.
Microsoft hat leider noch keine "einfache" Möglichkeit geschaffen, dynamisch auf andere Excel-Dateien zuzugreifen.
Es gibt im Internet viele Vorschläge, wie man dieses Problem lösen kann. Jedoch kann keiner dieser Lösungsansätze die Standard-Funktionalität, aus anderen Mappen Daten zu lesen, 100% ersetzen.
Mein Favorit ist das Verwenden einer in VBA geschriebenen, benutzerdefinierten Funktion.
Vielleicht ist dies auch eine mögliche Lösung für Dich?

Kopiere folgenden Code in ein Modul:
Code:
Option Explicit

Public Function WertAusGeschlossenerMappe(ByVal Pfad As String, _
                                         ByVal Mappe As String, _
                                         ByVal Tabelle As String, _
                                         ByVal Zelle As String) As Variant
   Dim a As String
   Dim App As Object, WB As Workbook
   
   If Right(Pfad, 1) <> "\" Then Pfad = Pfad & "\"
   
   If Dir(Pfad & Mappe) = "" Then
       WertAusGeschlossenerMappe = CVErr(xlErrRef)
       GoTo Ende
   End If

   
   Set App = CreateObject("Excel.Application")
   Set WB = App.Workbooks.Add
   
   a = "'" & Pfad & "[" & Mappe & "]" & Tabelle & "'!" & Range(Zelle).Address(ReferenceStyle:=xlR1C1)
       
   WertAusGeschlossenerMappe = App.ExecuteExcel4Macro(a)


Ende:
   If Not WB Is Nothing Then WB.Close False
   If Not App Is Nothing Then App.Quit
   Set App = Nothing

End Function

und verwende die neue Funktion im Tabellenblatt so ...

Arbeitsblatt mit dem Namen 'Tabelle1'
 AB
1Pfad\Users\ju\Excel\
2MappeWorkbook2.xlsx
3TabelleSheet1
4ZelleA1
5  
6ErgebnisMein Wert aus der geschlossenen Mappe

ZelleFormel
B6=WertAusGeschlossenerMappe(B1;B2;B3;B4)
Diese Tabelle wurde mit Tab2Html (v2.5.0) erstellt. ©Gerd alias Bamberg

LG Gerd
Hi Gerd,

die Lösung klingt klasse! Und sie funktioniert.
Hi Gerd,

vielen Dank! Das ist super!  :15: