Clever-Excel-Forum

Normale Version: Pfadangaben in Bezügen via Namen einsezten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo mir geht langsam der Überblick meiner Bezüge zu externen Arbeitsmappen verloren.
Wollte nun die Pfadangaben in einer Zelle hinterlegen und dann in den Bezügen diese dann über Namen ansprechen.

Im beigefügten Beispiel ist der Zelle B2 mit Namen "Pfad_Master" definiert

wenn ich nun den Pfad in der Formel durch "Pfad_Master" ersetze bekomme ich einen Fehler mit  #Bezug

=INDEX('C:\Kalkulation\[Master.xlsx]Grundpreise_Material'!D:D;$E12) funktioniert
=INDEX(Pfad_Master!D:D;$E12) funktioniert nicht (auch mit hochkomma 'Pfad_Master' funzt das nicht).

was ist denn hier falsch oder geht das gar nicht!?


Gruß

Volker
Hola,

Pfad_Master! bedeutet, dass du in der gleichen Datei auf das Blatt "Pfad_Master" verweisen willst. Das gibt es nicht, daher #BEZUG.
Wie ist B2 denn nun definiert? Nur als "Pfad_Master"? Wenn ja, woher soll Excel wissen, das sich dahinter ein echter Dateipfad befinden soll?

Gruß,
steve1da
in der Zelle mit Namen "Pfad_Master" ist als Text

C:\Kalkulation\[Master.xlsx]Grundpreise_Material

enthalten!

somit wollte ich über den Namen den Inhalt der Zelle ansprechen.


Gruß


Volker
Hola,

ungetestet:

Code:
=INDEX(indirekt("'"&B2&"'!D:D");$E12)


Dafür muss die Zieldatei aber geöffnet sein.
Gruß,
steve1da
Danke leider nicht das was ich wollte.

Funktion müsste so sein als ob
=INDEX('C:\Kalkulation\[Master.xlsx]Grundpreise_Material'!D:D;$E12)  in der Zelle steht.
nur halt, dass
C:\Kalkulation\[Master.xlsx]Grundpreise_Material   - aus dem Inhalt einer Zelle kommt.

Da sich die Pfade immer ändern wäre es mir ganz recht hier immer den Überblick mit "sichtbarem" Pfad zu haben.
da dachte ich eigentlich, dass ich den Inhalt der Zelle mit "Namen" hier verwenden kann.


Gruß

Volker
Hallo Profis,
Generell funktionier das mit der Indirekt Formel schon aber, dass hier die "Quelldatei" geöffnet sein muss ist nicht optimal!
gibt es eine Möglichkeit das zu umgehen mögl. ohne VBA!

Gruß Volker
Hallo,

ohne VBA nur so:
http://www.herber.de/excelformeln und bitte suchen .../tips.html?welcher=107
Hallo René,
danke für den link.
Hab ich auch gefunden ist aber immer noch umständlich da die Zellen bei mir verstreut liegen.
Mein Versuch den Zellinhalt mi hilfszellen und verketten bringt mir zwar den korrekten „Text“ der Formel aber ausgewertet wird hier nix!
Kann’s nicht fassen, dass es da keine gute Lösung gibt.

Keiner eine Idee wie der Text dazu gebracht werden kann die „Funktion“ „auszuwerten“?

Wie sieht denn sowas in vba aus?

Gruß Volker
Hallöchen,

Eine Lösung findest Du, wenn Du in unserer Suche mal nach excel4macro suchst.
Hallo, :19:

in VBA würde das prinzipiell so aussehen: :21:

Code:
Option Explicit
'Const strSheetQ As String = "Tabelle1" ' DIE Tabelle wird ausgelesen"
Const strSheetZ As String = "Tabelle1" ' Die Tabelle in DIESER Datei
'Const strRangeQ As String = "B2" ' Der Quellbereich wird ausgelesen
Const strRangeZ As String = "F12" ' Der Zielbereich
'Const strFile As String = "C:\Temp\TestDatei.xls" ' Pfad und Datei
Public Sub Main()
    Dim strRangeQ As String
    Dim strSheetQ As String
    Dim strFile As String
    With ThisWorkbook.Worksheets(strSheetZ)
        strSheetQ = Right(.Range("B2").Value, Len(.Range("B2").Value) - InStrRev(.Range("B2").Value, "]", , vbTextCompare))
        strFile = Split(Split(.Range("B2").Value, "[")(1), "]")(0)
        strRangeQ = "D" & .Range("E12").Value
        .Range(strRangeZ).Formula = "='" & Mid(strFile, 1, _
            InStrRev(strFile, "\")) & "[" & _
            Mid(strFile, InStrRev(strFile, _
            "\") + 1) & "]" & _
            strSheetQ & "'!" & strRangeQ
            .Range(strRangeZ).Value = .Range(strRangeZ).Value
    End With
End Sub

In Zelle "B2" steht bei mir "C:\Temp\[Master.xlsx]Grundpreise_Material".

Das ist jetzt für eine Zelle. Das lässt sich natürlich auch für mehrere über eine Schleife machen. Kommt immer auf die jeweiligen Gegebenheiten an.

Den Code kann man auch kürzer schreiben - habe ihn von hier genommen und etwas angepasst. Nur um dir das Prinzip zu zeigen. Blush

Kürzerer Code: :21:

Code:
Option Explicit
Const strSheetZ As String = "Tabelle1" ' Die Tabelle in DIESER Datei
Const strRangeZ As String = "F12" ' Der Zielbereich
Public Sub Main()
    Dim strRangeQ As String
    With ThisWorkbook.Worksheets(strSheetZ)
        strRangeQ = "D" & .Range("E12").Value
        .Range(strRangeZ).Formula = "='" & .Range("B2").Value & "'!" & strRangeQ
            .Range(strRangeZ).Value = .Range(strRangeZ).Value
    End With
End Sub