Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: INDIREKT() mit Netzwerkdateipfad

INDIREKT() mit Netzwerkdateipfad
14.09.2016 14:36:29
Erik
Liebe Gemeinde,
ich habe folgendes Problem. Ich habe in einer Zelle ganz klassisch einen Dateipfad zu einer anderen Arbeitsmappe hinterlegt.
Per INDIREKT() beziehe ich diesen Pfad in eine SVERWEIS()-Funktion ein und lasse etwas aus der anderen Arbeitsmappe anzeigen.
Soweit so gut, funktioniert prima. ABER: Wenn der Dateipfad auf eine Arbeitsmappe auf einem Netzlaufwerk zeigt, dann geht es nicht und er zeigt mir den #BEZUG!-Fehler für die INDIREKT()-Funktion.
Ich würde mich freuen, wenn jemand von euch dieses Problem schonmal gelöst hat und mich daran teilhaben lässt. :)
Ich danke euch für eure Aufmerksamkeit und
Grüße aus Dresden
Erik
PS: Ich habe die Zielarbeitsmappe auch schön brav geöffnet im Hintergrund. Daran liegt es nicht. :)
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: INDIREKT() mit Netzwerkdateipfad
14.09.2016 14:42:00
Daniel
Hi
Indirekt verarbeitet nur Bezüge auf geöffnete Dateien.
Geschlossene Dateien können per Indirekt nicht referenziert werden.
Dh du brauchst bei Indirekt sowieso nur die Datei angeben und kannst den Pfad weglassen.
Gruß Daniel
AW: INDIREKT() mit Netzwerkdateipfad
14.09.2016 15:00:41
UweD
Hallo
ich habe es mal nachgebaut.
so klappt es bei mir.
Userbild
Formel=

=SVERWEIS(C1;INDIREKT("'"&A1&"[Muster.xlsx]Auswertung A'!$I:$J");2;0)
Auch das vorherige öffnen per Makro geht.
Sub testen()
    Dim Pfad As String, Datei As String
    Pfad = "\\Server01\Data\ABT1\ABT2\User_alg\Temp\"
    Datei = "Muster.xlsx"
    Workbooks.Open Pfad & Datei
End Sub

Gruß UweD
Anzeige
AW: INDIREKT() mit Netzwerkdateipfad
14.09.2016 20:41:55
Erik
Lieber UweD,
du bist prima! Das war es! Ich brauche den UNC-Pfad der Datei. Ich bedanke mich bei dir für deine Hilfe!
Grüße
Erik
Prima! Danke für die Rückmeldung.
15.09.2016 07:53:24
UweD
AW: Prima! Danke für die Rückmeldung.
16.09.2016 09:54:20
Erik
Liebe Gemeinde,
anderen Menschen mit dem gleichen Problem mag ich gleich noch mithelfen. Folgendes Makro in ein Standardmodul packen:

'Quelle:  _
https://www.herber.de/forum/archiv/752to756/754940_Netzwerkpfad_auslesen.html
'Windows API einbinden, um den UNC-Pfad zu ermitteln
'Dokumentation: http://de. _
wikipedia.org/wiki/Uniform_Naming_Convention
Declare Function WNetGetConnection Lib "mpr.dll" _
Alias "WNetGetConnectionA" ( _
ByVal lpszLocalName As String, _
ByVal lpszRemoteName As String, _
cbRemoteName As Long) As Long
Public Function Netzwerkpfad_ermitteln(ByVal Lokaler_Dateipfad As String) As String
'// Methode:   | Konvertiert einen Pfad in UNC-Pfad (\\SERVER\...)
'// Parameter: | sLocalPath = gültiger, lokaler Pfad (X:\..)
'// Rückgabe:  | bei Erfolg = UNC-Pfad
'//            | bei Fehler = sLocalPath
Const KEIN_FEHLER  As Long = 0
Dim Netzwerkpfad    As String
Dim Zwischenergebnis     As String
Dim Laufwerk      As String
Netzwerkpfad_ermitteln = Lokaler_Dateipfad
If Mid(Lokaler_Dateipfad, 2, 1)  ":" Then Exit Function
'Die API-Funktion benötigt nur das Laufwerk
Laufwerk = Left(Lokaler_Dateipfad, 2)
Netzwerkpfad = String(260, 0)
'API-Funktion aufrufen, wenn sie keinen Fehler ergibt dann...
If WNetGetConnection(Laufwerk, _
Netzwerkpfad, _
Len(Netzwerkpfad)) = KEIN_FEHLER Then
Zwischenergebnis = Left(Netzwerkpfad, InStr(Netzwerkpfad, vbNullChar) - 1)
If Len(Zwischenergebnis) > 0 Then
Netzwerkpfad_ermitteln = Zwischenergebnis & Mid(Lokaler_Dateipfad, 3)
End If
End If
End Function
Anschließend kann man diese Funktion überall in Excel verwenden, in meinem Fall so:

=SVERWEIS("test";INDIREKT(Netzwerkpfad_ermitteln("V:\Ordner\Ordner\[Dateiname]Tabellenname! _
Bereich");2;0)

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

INDIREKT() mit Netzwerkdateipfad in Excel nutzen


Schritt-für-Schritt-Anleitung

  1. Dateipfad in einer Zelle hinterlegen:

    • Lege den Netzwerkdateipfad in einer Zelle ab, z.B. in A1.
  2. SVERWEIS() und INDIREKT() verwenden:

    • Verwende die folgende Formel, um auf die Daten in einer anderen Arbeitsmappe zuzugreifen:
      =SVERWEIS(C1;INDIREKT("'"&A1&"[Muster.xlsx]Auswertung A'!$I:$J");2;0)
    • Hierbei ist C1 der Suchbegriff und Muster.xlsx die Datei, auf die verwiesen wird.
  3. UNC-Pfad ermitteln:

    • Stelle sicher, dass der Dateipfad im UNC-Format vorliegt, um den #BEZUG!-Fehler zu vermeiden.
  4. Makro zur Ermittlung des UNC-Pfades nutzen:

    • Füge das folgende VBA-Makro in ein Standardmodul ein, um den UNC-Pfad automatisch zu ermitteln:
      
      Declare Function WNetGetConnection Lib "mpr.dll" _
      Alias "WNetGetConnectionA" ( _
      ByVal lpszLocalName As String, _
      ByVal lpszRemoteName As String, _
      cbRemoteName As Long) As Long

    Public Function Netzwerkpfad_ermitteln(ByVal Lokaler_Dateipfad As String) As String ' ... (Vervollständige die Funktion wie im Forum beschrieben) End Function


Häufige Fehler und Lösungen

  • #BEZUG!-Fehler:

    • Ursache: INDIREKT() kann nur auf geöffnete Dateien zugreifen. Lösung: Stelle sicher, dass der Pfad im UNC-Format vorliegt.
  • Verweis auf geschlossene Dateien:

    • INDIREKT() funktioniert nicht mit geschlossenen Dateien. Nutze stattdessen das oben genannte Makro, um den UNC-Pfad zu ermitteln und verwende diesen in Deiner Formel.
  • Unzureichende Berechtigungen:

    • Stelle sicher, dass Du die notwendigen Berechtigungen für den Zugriff auf das Netzwerkverzeichnis hast.

Alternative Methoden

  • Verwendung von SVERWEIS() ohne INDIREKT():

    • Wenn der Verweis auf eine geschlossene Datei nicht notwendig ist, kannst Du den SVERWEIS() direkt nutzen, ohne die Datei zu öffnen.
  • Verweis auf andere Datei ohne Öffnen:

    • Erwäge die Verwendung von Power Query, um Daten aus einer geschlossenen Arbeitsmappe zu importieren, ohne sie zu öffnen.

Praktische Beispiele

  • Beispiel mit Makro:

    =SVERWEIS("test";INDIREKT(Netzwerkpfad_ermitteln("V:\Ordner\[Dateiname]Tabellenname!Bereich");2;0)
    • Hier wird die Funktion Netzwerkpfad_ermitteln verwendet, um den richtigen UNC-Pfad zu erhalten.
  • Direkter SVERWEIS auf geöffnete Datei:

    =SVERWEIS("Suchbegriff";'[Muster.xlsx]Tabelle1'!$A:$B;2;FALSCH)
    • Diese Formel erfordert, dass Muster.xlsx geöffnet ist.

Tipps für Profis

  • Dynamische Verweise:

    • Nutze dynamische Verweise, um die Flexibilität Deiner Formeln zu erhöhen. Eine Kombination von INDIREKT() und SVERWEIS() kann sehr leistungsstark sein.
  • Fehlerbehandlung in VBA:

    • Implementiere Fehlerbehandlungsroutinen in Deinen Makros, um sicherzustellen, dass Deine Funktionen auch bei unerwarteten Eingaben robust bleiben.
  • Verwendung von relativen Pfaden:

    • Wenn möglich, arbeite mit relativen Pfaden, um die Wartbarkeit Deiner Arbeitsmappen zu verbessern.

FAQ: Häufige Fragen

1. Warum funktioniert INDIREKT() nicht mit geschlossenen Dateien?
INDIREKT() in Excel kann nur auf geöffnete Dateien zugreifen. Um Daten aus geschlossenen Dateien zu verwenden, benötigst Du alternative Methoden wie Makros.

2. Wie kann ich den UNC-Pfad herausfinden?
Verwende das bereitgestellte Makro, um automatisch den UNC-Pfad von einem lokalen Dateipfad zu ermitteln. Dies hilft, den Zugriff auf Netzlaufwerke zu erleichtern.

3. Gibt es eine Möglichkeit, den SVERWEIS auf eine geschlossene Datei anzuwenden?
Ja, Du kannst Power Query verwenden, um Daten aus geschlossenen Arbeitsmappen zu importieren, was eine gute Alternative darstellt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige