XL 2016 VBA - Créer un classeur dans un répertoire OneDrive

Dudu2

XLDnaute Barbatruc
Bonjour,
J'ai un souci avec un code d'un utilisateur.
La création par VBA d'un classeur dans son répertoire C:\Users\<utilisateur>\OneDrive part en erreur 1004.

Je n'ai pas OneDrive et j'aimerais savoir s'il y a des restrictions d'écriture par le VBA ?

1724791261821.png


1724791223552.png
 

Gégé-45550

XLDnaute Accro
Bonjour,
J'ai un souci avec un code d'un utilisateur.
La création par VBA d'un classeur dans son répertoire C:\Users\<utilisateur>\OneDrive part en erreur 1004.

Je n'ai pas OneDrive et j'aimerais savoir s'il y a des restrictions d'écriture par le VBA ?

Regarde la pièce jointe 1202475

Regarde la pièce jointe 1202474
Bonsoir Dudu2,
sans certitude aucune mais il me semble bien qu'il faut convertir le chemin d'accès en chemin UNC.
À tester :
VB:
Option Explicit

#If VBA7 Then
    Private Declare PtrSafe Function DavGetUNCFromHTTPPath Lib "Netapi32.dll" (ByVal Url As LongPtr, ByVal UncPath As LongPtr, lpSize As Long) As Long
#Else
    Private Declare Function DavGetUNCFromHTTPPath Lib "Netapi32.dll" (ByVal Url As Long, ByVal UncPath As Long, lpSize As Long) As Long
#End If
 
'-----------------------------------------------------------------------------------------
' Convertit un chemin SharePoint de type (http...) en chemin UNC (\\...)
' Le chemin retourné a un séparateur final si le chemin initial en avait un
'-----------------------------------------------------------------------------------------
Public Function getUNCPath(pPath As String) As String
Dim lPath As String
Dim lUncPath As String
Dim lSize As Long
lSize = 260 ' MAX_PATH
lPath = pPath & vbNullChar ' Chemin + caractère null de fin
lUncPath = Space(lSize) ' Buffer de réception
If DavGetUNCFromHTTPPath(StrPtr(lPath), StrPtr(lUncPath), lSize) = 0 Then
    ' 0 = pas d'erreur
    ' on reçoit dans lSize la taille du chemin UNC (séparateur de fin inclus)
    getUNCPath = Left(lUncPath, lSize - 1)
    ' Si le chemin initial avait un séparateur final, on en ajoute un
    If Right(pPath, 1) = "/" Or Right(pPath, 1) = "\" Then
        getUNCPath = getUNCPath & "\"
    End If
Else
    getUNCPath = pPath
End If
End Function
Cordialement,
 
Dernière édition:

Discussions similaires

Réponses
14
Affichages
235

Membres actuellement en ligne

Statistiques des forums

Discussions
313 929
Messages
2 103 635
Membres
108 741
dernier inscrit
adel_benammar