Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Eigenen Pfad auslesen bei OneDrive

Eigenen Pfad auslesen bei OneDrive
22.10.2020 12:11:40
Steffen
Hallo zusammen,
Ich möchte den Pfad einer geöffneten Excel Datei bestimmen. Die Datei befindet sich auf OneDrive.
Normalerweise mache ich das so:
EigenerPfad = ActiveWorkbook.Path

Dieser Befehl liefert mir folgendes zurück.
"https://my.sharepoint.com/personal/myname/Documents/Documents/Test"
Wenn ich dann aber diesen Pfad ansteuern will, um z. B. andere Dateien die sich in dem Pfad befinden zu öffnen kommt die Fehlermeldung, dass der Pfad nicht existiert.
Verwende ich CurDir kommt der Pfad so:
"C:\UserData\MeinName\OneDrive\Documents\Test"
Dieser Pfad führt nicht zu einer Fehlermeldung. Allerdings kommt bei CurDir eben nicht immer der Pfad der geöffneten Arbeitsmappe.
Was ich bräuchte wäre praktisch ein "CurDir (ActiveWorkbook)" . Das funktioniert aber leider nicht.
Ich kann auch den Pfad nicht hart hinterlegen, da das Excel Tool über OneDrive geshared wird und mehrere Personen das Tool nutzen. Bei jeder Person ist der Pfad ein anderer. Somit muss der Pfad jeweils ermittelt werden.
Hat jemand eine Idee wie ich den Pfad der geöffneten Mappe im Format "C:\...." auslesen kann.
Vielen Dank.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Eigenen Pfad auslesen bei OneDrive
22.10.2020 12:38:21
Oberschlumpf
Hi Steffen
VBA = gut?
Ich denk, da ist noch Luft nach oben ;-)
Denn wenn VBA = gut, solltest du wissen, dass man zum Ermitteln von Infos der Datei, in dem die Anfrage erfolgt, besser so vorgehen sollte:
EigenerPfad = ThisWorkbook.Path
Denn mit EigenerPfad = ActiveWorkbook.Path wird "nur" die Info der zum Zeitpunkt der Abfrage aktiven Datei ermittelt!
Das heißt, wenn du irgdwo im Code z Bsp
WorkBook("andere Datei").Activate
verwendest, und dann erst später mit EigenerPfad = ActiveWorkbook.Path kommst, wird der Pfad der - zuvor aktivierten - aber nicht! der Datei ermittelt, in der der Code aufgerufen wird.
So kann es also sein (du schreibst ja: "Allerdings kommt bei CurDir eben nicht immer der Pfad der geöffneten Arbeitsmappe."), dass du eine andere, geöffnete Datei mit dem Pfad-Code abfragst.
Aber das alles von mir ist nur eine Vermutung...
Hilfts denn?
Ciao
Thorsten
Anzeige
AW: Eigenen Pfad auslesen bei OneDrive
22.10.2020 14:24:15
Steffen
Hi Oberschlumpf,
Velen Dank für Deine Antwort. Das Problem liegt aber wo anders und es spielt hier keine Rolle ob ich ThisWorkbook oder ActiveWorkbook nehme.
Bei beiden Varianten erhalten ich den Pfad als "https://....." und eben nicht als "C:\...", dass ich verwenden müsste.
Probiere es mal so...
22.10.2020 14:50:58
Case
Hallo Steffen, :-)
... der Spur nach (getestet): ;-)
Option Explicit
Public Sub Main()
With CreateObject("Scripting.FileSystemObject")
Debug.Print .GetAbsolutePathName(ThisWorkbook.Name)
End With
End Sub
Servus
Case
Anzeige
AW: Probiere es mal so...
22.10.2020 14:56:12
Steffen
Klasse!!! Funktioniert!!
Vielen Dank!!!
AW: Eigenen Pfad auslesen bei OneDrive
22.10.2020 14:49:59
Steffen
Vielleicht habe ich mich etwas unklar ausgedrückt.
Die Datei "Test.xlsm" liegt auf "C:\UserData\MeinName\OneDrive\Documents\Test"
Wenn ich die Datei "Test.xlsm" öffne und den Code
EigenerPfad = ActiveWorkbook.Path
oder
EigenerPfad = ThisWorkbook.Path ausführe sagt mir Excel, dass die Datei "Test.xlsm" im Folder "https://my.sharepoint.com/personal/myname/Documents/Documents/Test" liegt.
Ich müsste aber den Pfad "C:\UserData\MeinName\OneDrive\Documents\Test" erhalten um dann im weiteren Verlauf keine Fehlermeldung zu erhalten.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Pfad einer Excel-Datei auf OneDrive auslesen


Schritt-für-Schritt-Anleitung

Um den Pfad einer geöffneten Excel-Datei auf OneDrive auszulesen, kannst Du folgende Schritte ausführen:

  1. Öffne den VBA-Editor in Excel, indem Du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" > "Einfügen" > "Modul".

  3. Gebe den folgenden Code ein:

    Option Explicit
    Public Sub Main()
       Dim EigenerPfad As String
       With CreateObject("Scripting.FileSystemObject")
           EigenerPfad = .GetAbsolutePathName(ThisWorkbook.Name)
           Debug.Print EigenerPfad
       End With
    End Sub
  4. Führe das Skript aus: Drücke F5 oder gehe zu "Run" > "Run Sub/UserForm".

  5. Der Pfad wird im Direktfenster angezeigt. Du kannst ihn nun für weitere Operationen verwenden.


Häufige Fehler und Lösungen

  • Fehler: Pfad wird als URL angezeigt: Wenn Du ActiveWorkbook.Path oder ThisWorkbook.Path verwendest, erhältst Du möglicherweise einen URL-Pfad (z.B. https://...). Um den lokalen Pfad zu erhalten, benutze die Methode mit GetAbsolutePathName, wie oben beschrieben.

  • Fehler: Fehlermeldung bei Dateizugriff: Stelle sicher, dass Du den lokalen Pfad tatsächlich benötigst, und dass die Datei lokal synchronisiert ist. Andernfalls kann es zu Zugriffproblemen kommen.


Alternative Methoden

Falls die obige Methode nicht funktioniert oder Du eine andere Vorgehensweise bevorzugst, könntest Du auch CurDir verwenden, wobei Du beachten solltest, dass es nicht immer den Pfad der aktuellen Arbeitsmappe zurückgibt. Eine weitere Möglichkeit ist, den UNC-Pfad zu verwenden, falls Deine Datei auf OneDrive gespeichert ist.

Dim Pfad As String
Pfad = "C:\UserData\MeinName\OneDrive\Documents\Test"

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du den Pfad in unterschiedlichen Szenarien verwenden kannst:

  1. Datei öffnen: Um eine andere Datei im gleichen Ordner zu öffnen:

    Dim AndereDatei As String
    AndereDatei = ThisWorkbook.Path & "\AndereDatei.xlsx"
    Workbooks.Open AndereDatei
  2. Dateien im selben Verzeichnis auflisten:

    Dim Datei As String
    Datei = Dir(ThisWorkbook.Path & "\*.*")
    Do While Datei <> ""
       Debug.Print Datei
       Datei = Dir
    Loop

Tipps für Profis

  • Verwende ThisWorkbook.Path: Dies ist effektiver, um den Pfad des Arbeitsbuchs zu ermitteln, in dem der VBA-Code ausgeführt wird.
  • Fehlerbehandlung: Integriere Fehlerbehandlungsroutinen, um Probleme beim Zugriff auf Dateien in OneDrive zu vermeiden.
  • Regularien für Dateinamen: Achte darauf, dass die Dateinamen keine ungültigen Zeichen enthalten, besonders beim Zugriff über OneDrive und SharePoint.

FAQ: Häufige Fragen

1. Warum bekomme ich den Pfad als URL?
Das liegt daran, dass ThisWorkbook.Path und ActiveWorkbook.Path den SharePoint-Pfad zurückgeben, wenn die Datei über OneDrive geöffnet wird. Nutze GetAbsolutePathName, um den lokalen Pfad zu erhalten.

2. Wie kann ich den Pfad einer Datei auf SharePoint auslesen?
Das Verfahren ist ähnlich, aber Du musst sicherstellen, dass Du die richtige Methode zur Ermittlung des Pfads verwendest, möglicherweise auch mit der Verwendung von UNC-Pfaden.

3. Kann ich den Code auch für andere Dateien verwenden?
Ja, Du kannst den Code anpassen, um den Pfad anderer Dateien zu ermitteln, solange Du den richtigen Dateinamen angibst.

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