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

Forumthread: Ordner erstellen falls nicht vorhanden in einem OneDrive

Ordner erstellen falls nicht vorhanden in einem OneDrive
27.08.2024 16:20:26
Juergen_m
Hallo,

Ich habe ein Excel Makro geschrieben, dass vordefinierte Filter setzt und eine PDF-Datei im Unterordner mit dem Namen "Reports" erstellt.
Der betreffende Teil des Makros prüft, ob der Unterordner "Reports" vorhanden ist und legt diesen ggf. vorm Speichern der PDF-Datei an.

Dies funktioniert mit dem folgenden Auszug aus dem Makro soweit wie geplant.

Dim strFolderPath As String
strFolderPath = ThisWorkbook.Path & "\Reports\"
If Dir(strFolderPath, vbDirectory) = "" Then
MkDir (strFolderPath)
End If


Solange die Excel-Datei auf einem normalen Netzlaufwerk liegt und das Makro von dort aus ausgeführt wird, wird der Ordner "Reports" falls nicht schon vorhanden angelegt.

Wenn ich die Excel-Datei jedoch von einem "OneDrive" Laufwerk aus ausführe, erhalte ich folgende Meldung:

Laufzeitfehler '52':
Dateiname oder -nummer falsch


und im Makro wird die folgende Zeile gelb markiert:

If Dir(strFolderPath, vbDirectory) = "" Then


Ich vermute, dass der Fehler mit der Länge oder Schreibweise des Speicherpfades zusammenhängt.
(C:\Users\MeinName\OneDrive – Meine Organisation\Daten Mein Name\Unterordner\Unterordner2) --> anonymisierter Pfad

Hat hier im Forum jemand eine Lösung für dieses Problem?

Schöne Grüße,
Jürgen
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordner erstellen falls nicht vorhanden in einem OneDrive
27.08.2024 19:06:32
{Boris}
Hi,

der Pfad darf für OneDrive maximal eine Länge von 260 Zeichen betragen. Kannst DU das mal checken?

VG, Boris
Habe es gerade bei mir...
28.08.2024 13:18:41
Case
Moin Jürgen, :-)

... getestet: ;-)

Option Explicit

Public Sub Main()
With CreateObject("Scripting.FileSystemObject")
MkDir Left(.GetAbsolutePathName(ThisWorkbook.Name), InStrRev(.GetAbsolutePathName(ThisWorkbook.Name), "\")) & "Reports\"
End With
End Sub


Der Code legt den Ordner im lokalen Onedriveordner an. Wird aber gleich mit meinem Onlinekonto synchronisiert. ;-)

Servus
Case
Anzeige
AW: Habe es gerade bei mir...
29.08.2024 08:11:18
Juergen_m
Hallo Case,

ich habe den Code in mein Makro integriert und die Datei vom OneDrive aus ausgeführt.
Beim Ausführen des Makros wurde nun der neue Ordner "Reports" erstellt.

Folgende Punkte sind mir aber aufgefallen:
- Im neu erstelltem Ordner wird die Kopie der PDF-Datei beim ersten Ausführen des Makros nicht mehr abgelegt, dies erfolgt erst beim zweiten Ausführen des Makros.
- Ich habe die Excel-Datei anschließend auf ein normales Netzlaufwerk kopiert und von dort aus ausgeführt.
Auf dem Netzlaufwerk wird beim Ausführen des Makros kein neuer Ordner erstellt, stattdessen wird der neue Ordner immer noch im OneDrive erstellt.
Ich vermute mal, dass der Speicherpfad beim erstellen des Makros abgespeichert wird und sich beim verschieben der Excel-Datei nicht anpasst (kann das sein?).
- Nach einem Neustart des Rechners wird auch auf dem OneDrive kein neuer Ordner mit dem Namen "Reports" mehr angelegt.

MfG, Jürgen




Anzeige
OK. Hier jetzt eine...
29.08.2024 13:56:21
Case
Moin Jürgen, :-)

... Möglichkeit, die ich mehrmals auf OneDrive und lokal getestet habe. ;-)

Option Explicit

Public Sub Main_1()
If Left(ThisWorkbook.Path, 4) = "http" Then
MkDir Environ("onedrive") & "\" & Tabelle1.Evaluate("=REGEXREPLACE(""" & ThisWorkbook.Path & """,""https://d.docs.live.net/(.*?)\/"","""")") & "\Reports\"
Else
MkDir ThisWorkbook.Path & "\Reports\"
End If
End Sub
Public Sub Main_2()
Dim strTMP As String
strTMP = Environ("onedrive") & "\" & Tabelle1.Evaluate("=REGEXREPLACE(""" & ThisWorkbook.Path & """,""https://d.docs.live.net/(.*?)\/"","""")") & "\Reports\"
If Left(ThisWorkbook.Path, 4) = "http" Then
If Dir(strTMP, vbDirectory) = "" Then
MkDir strTMP
End If
Else
If Dir(ThisWorkbook.Path & "\Reports\", vbDirectory) = "" Then
MkDir ThisWorkbook.Path & "\Reports\"
End If
End If
End Sub


Ich hoffe, dass du "REGEXREPLACE" schon hast (falls nicht, mal ein Office-Update laufen lassen): ;-)
https://support.microsoft.com/de-de/office/regexreplace-funktion-9c030bb2-5e47-4efc-bad5-4582d7100897

Wenn nicht, musst du über andere Funktionen den Ordner auslesen. Ich plage mich mit Teil, Rechts, Links, Länge... nicht mehr rum.

Im Prinzip prüft der Code, ob die Datei auf OneDrive ist, oder nicht. Beim zweiten Code wird noch geprüft, ob der Ordner schon vorhanden ist.

Servus
Case
Anzeige
AW: OK. Hier jetzt eine...
30.08.2024 08:50:53
Juergen_m
Hallo Case,

danke für die schnelle Hilfe.
Dein Code funktioniert auf meinem privaten Rechner perfekt.

Auf meinem Arbeitsrechner habe ich zwar noch das Problem, dass der OneDrive mit dem C:\ Laufwerk verknüpft ist und somit die Suche nach HTTPS:\\ erfolglos bleibt.

Die Anwender müssen den Ordner nun halt einmalig manuell erstellen.
Damit kann ich aber gut leben.


Schöne Grüße,
Jürgen
Anzeige
AW: Ordner erstellen falls nicht vorhanden in einem OneDrive
28.08.2024 10:33:06
Juergen_m
Hallo Boris,
ich habe die Zeichen im Dateipfad gezählt und komme auf 135 Zeichen.
Daran sollte es also nicht liegen.
MfG, Jürgen
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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