VBA et SharePoint 2013 5


De plus en plus d'entreprises migrent leur SharePoint vers la version 2013. Le problème est que le code VBA pour travailler avec des fichiers qui fonctionnait jusqu'à la version SharePoint 2010 ne fonctionne plus.

Vous n'arrivez plus à copier, supprimer, déplacer ou même à ouvrir dans VBA vos fichiers stockés sur SharePoint 2013? Voici la solution. Et la bonne nouvelle est qu'il ne faut même pas modifier le code VBA. Il suffit de modifier, de manière très spécifique, le lien vers vos fichiers.

Transformer le lien pour le rendre utilisable en SharePoint 2013

Le plus simple pour expliquer cette solution est de le montrer sur un exemple. Prenons donc la situation suivante: on veut copier un fichier texte (" C:\MonDossier\test.txt ") sur le SharePoint. Dans SharePoint 2010, la destination aurait la forme suivante
" //teamsites.monserveur.intranet/sites/mon-site/Shared Documents/mon-dossier/test.txt "

On peut donc utiliser le code suivant:

Sub CopierFichierSharePoint2010()
'par: https://excel-malin.com

On Error GoTo Erreur

Dim MonFichier As String
Dim DestinationSharePoint As String

MonFichier = "C:\MonDossier\test.txt"
DestinationSharePoint = "//teamsites.monserveur.intranet/sites/mon-site/Shared Documents/mon-dossier/test.txt"

FileCopy MonFichier, DestinationSharePoint
Exit Sub

Erreur:
MsgBox "Une erreur est survenue lors de la copie du fichier..."
End Sub

Dans SharePoint 2013, le lien vers la destination ressemble à ceci:

" https://monserveur.net/sites/mon-site/Shared Documents/mon-dossier/test.txt "

Mais malheureusement, si vous utilisez un tel chemin dans le code plus haut, cela ne fonctionnera pas. Et non, supprimer le "https:" ne fera pas l'affaire.

Il est nécessaire de transformer le lien de la manière suivante:

  1. supprimer le "https:"
  2. remplacer les barres obliques ( / ) par les barres obliques inversées ( \ )
  3. il faut ajouter "@SSL" (sans guillemets) juste après le nom (le suffixe) du serveur

Cela donnera donc:

" https://monserveur.net/sites/mon-site/Shared Documents/mon-dossier/test.txt "

–> " \\monserveur.net@SSL\sites\mon-site\Shared Documents\mon-dossier\test.txt "

Avec l'adresse dans cette forme, vous pourrez continuer à utiliser vos codes VBA existants pour travailler avec des fichiers.

Pour en revenir à notre exemple, voici le code VBA qui fonctionnera lors d'utilisation du SharePoint 2013:

 

Sub CopierFichierSharePoint2013()
'par: https://excel-malin.com

On Error GoTo Erreur

Dim MonFichier As String
Dim DestinationSharePoint As String

MonFichier = "C:\MonDossier\test.txt"

'Destination URL = "https://monserveur.net/sites/mon-site/Shared Documents/mon-dossier/test.txt"
' => il est nécessaire de le transformer de manière suivante:
DestinationSharePoint = "\\monserveur.net@SSL\sites\mon-site\Shared Documents\mon-dossier\test.txt"

FileCopy MonFichier, DestinationSharePoint 'cette commande fonctionnera dans SharePoint 2013
Exit Sub

Erreur:
MsgBox "Une erreur est survenue lors de la copie du fichier..."
End Sub

 

En cas de problèmes alias "ça ne marche toujours pas"

Il est possible qu'il faille également supprimer les espaces et les caractères spéciaux de l'URL du fichier. Pour cela, vous pouvez utiliser la fonction VBA AssainirURL() que je vous propose… Elle est très facile à utiliser et à intégrer dans votre Projet VBA.

Conclusion

Même si le problème semble assez grave au départ (impossible de gérer les fichiers) lors de la migration vers SharePoint 2013, la solution est relativement simple même si elle peut être fastidieuse (modification de toutes les adresses est nécessaire). Mais au moins, il n'est pas nécessaire de modifier la structure du code VBA.

 

39 0




Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

5 commentaires sur “VBA et SharePoint 2013

  • Damien

    Bonjour,
    Cela marche très bien mais le fichier arrive avec une petite flèche verte en bas à droite et il faudrait donc encore l'archiver pour le rendre visible aux autres. Pourquoi?
    Merci
    Damien

    • excel-malin.com Auteur de l’article

      Bonjour Damien,
      cela signifie que le fichier a le status "Check out". Ce qui veut dire qu'il n'est disponible que pour vous jusqu'à ce que vous changiez son status en "Check in".
      Ce sont les joies de SharePoint…

      Cordialement, Martin

  • Hugo

    Hello,

    D'abord merci pour tous les tutos c'est top.

    J'ai un problème lorsque j'essaie de télécharger n'importe quel fichier stocké sur le SharePoint de mon entreprise avec VBA.
    Les fichiers sont corrompus quel que soit le type, impossible de les ouvrir.
    J'utilise ce code pour le téléchargement des fichiers : https://excel-malin.com/codes-sources-vba/copier-fichier-sharepoint-vba/

    Mettons que je veuille télécharger un pdf nommé "azer.pdf", situé dans un répertoire nommé "Fichiers"

    Le lien du dossier SharePoint dans la barre d'adresse est :
    'https://maboite.sharepoint.com/sites/Salles%20H24/BDD_PAD/Fichiers/Forms/AllItems.aspx

    J'ai donc inscrit pour URL sur VBA : "\\maboite.sharepoint.com@SSL\sites\Salles H24\BDD_PAD\Fichiers\azer.pdf"

    Mais rien ne se télécharge…
    (J'ai essayé avec un espace et avec "%20" mais pas de différence).

    Pour info, le lien que je trouve lorsque je "copie le lien" en cliquant sur le fichier pdf sur SharePoint est :
    'https://maboite.sharepoint.com/:b:/r/sites/Salles%20H24/BDD_PAD/Fichiers/azer.pdf?csf=1&e=OK1D3V

    Est ce que mon problème est lié a la différence entre les liens ?

    Merci pour votre aide !

    • excel-malin.com Auteur de l’article

      Bonjour Hugo,
      désolé pour la réponse tardive…
      Et si vous essayiez le lien suivant?
      \\maboite.sharepoint.com@SSL\:b:\r\sites\Salles%20H24\BDD_PAD\Fichiers\azer.pdf
      le .../r/... de votre lien signifie que le fichier est en lecture seule.
      Vos pourriez essayer aussi avec ... /s/... à la place – cela veut dire que le fichier est partagé.

      J'espère que cela aide.

      Sinon une autre possibilité:
      – mettez un fichier Excel (quelconque) dans le même dossier.
      – ouvrez Excel avec un fichier vierge
      – lancez le "macro recorder"
      – ouvrez le fichier excel qui se trouve dans le dossier sur SharePoint
      – arrêtez le macro recorder et regardez le code VBA enregistré. Normalement, vous devriez y voir le chemin vers le fichier Excel tel que Excel lui-même l'utilise.
      C'est donc cette forme-là qui devrait être la bonne et vous n'aurez qu'à la réutiliser et juste changer le nom du fichier vers votre PDF

      Je suis curieux si un de mes conseils va marcher…
      Cordialement, Martin

      • Hugo

        Bonjour Martin,
        Merci beaucoup pour votre réponse !

        Malheureusement, aucune des deux solutions n'a fonctionné…
        Il ne se passe toujours rien lorsque je lance la macro avec le nouveau lien.

        J'ai donc essayé de faire la manip' pour trouver manuellement le lien du fichier, mais rien ne s'affiche non plus sur l'enregistreur de macro (pour info j'utilise Excel 2013) :/

        Bon après-midi,
        Hugo