Pfadangaben in Bezügen via Namen einsezten
#1
Question 
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
Top
#2
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
Top
#3
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
Top
#4
Hola,

ungetestet:

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


Dafür muss die Zieldatei aber geöffnet sein.
Gruß,
steve1da
[-] Folgende(r) 1 Nutzer sagt Danke an steve1da für diesen Beitrag:
  • volker_xy
Top
#5
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
Top
#6
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
Top
#7
Hallo,

ohne VBA nur so:
http://www.herber.de/excelformeln und bitte suchen .../tips.html?welcher=107
VG
von René und seinen 3 Gehirnzellen

Top
#8
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
Top
#9
Hallöchen,

Eine Lösung findest Du, wenn Du in unserer Suche mal nach excel4macro suchst.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • volker_xy
Top
#10
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
Top


Gehe zu:


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