Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Dateiname aus Zelle auslesen
#1
Lightbulb 
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
Antworten Top
#2
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
[-] Folgende(r) 2 Nutzer sagen Danke an Bamberg für diesen Beitrag:
  • Rabe, jules
Antworten Top
#3
Hi Gerd,

die Lösung klingt klasse! Und sie funktioniert.
Antworten Top
#4
Hi Gerd,

vielen Dank! Das ist super!  :15:
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste