J'ai réussi à utiliser VBA dans Excel pour mapper un lecteur vers extranet SharePoint afin de télécharger des fichiers, cependant lors du déploiement, cela fonctionne dans un emplacement mais pas dans un autre (différents environnements possibles). Je me demande si quelqu'un a des informations sur quel paramètre utilisateur ou système pourrait causer cela.
Dans le code ci-dessous, j'essaie de mapper le lecteur vers SharePoint. S'il y a une erreur, le gestionnaire crée une nouvelle instance d'Excel et la sauvegarde sur le site SharePoint. Par nature, cela force IE à s'ouvrir et à demander les détails de connexion de l'utilisateur, une fois soumis, cela les authentifie et télécharge le fichier. Ils peuvent ensuite mapper le lecteur vers SharePoint. Le problème que j'ai avec un groupe est qu'il téléchargera le fichier, cependant ils ne restent pas authentifiés pour mapper le lecteur. Encore plus étrange, l'utilisateur est connecté au site SharePoint dans IE pendant que je passe par cette procédure.
Sub MapSharePoint()
Dim objNet as object
Dim strDriveLetter as String
Dim strSharePointDatabaseFolder as String
Set objNet = CreateObject("WScript.Network")
On Error GoTo AUTH_Connection:
strDriveLetter =
strSharePointDatabaseFolder =
objNet.MapNetworkDrive strDriveLetter, strSharePointDatabaseFolder
Exit Sub
AUTH_Connection:
Dim xlApp As New Excel.Application
Dim xlDoc As Workbook
On Error GoTo ErrHandler:
Set xlApp = CreateObject("Excel.Application")
Set xlDoc = xlApp.Workbooks.Add
' En essayant de télécharger le fichier ci-dessous, IE s'ouvrira et demandera à l'utilisateur son nom d'utilisateur et mot de passe pour les authentifier
xlDoc.SaveAs FileName:="", FileFormat:=xlWorkbookNormal, AddToMru:=False
xlDoc.Close
xlApp.Quit
objNet.MapNetworkDrive strDriveLetter, strSharePointDatabaseFolder
Resume Next
ErrHandler:
MsgBox Err.Code, Err.Description
Fin Sub
MISE À JOUR 1:
Avec le code ci-dessous, le problème auquel je suis confronté est l'authentification SharePoint. Dans les accolades catch, j'ai ajouté la ligne de code ci-dessous pour afficher une fenêtre de message avec le texte d'erreur spécifique, et j'obtenais 403: Interdit. Après avoir téléchargé Fiddler, je peux voir que le site utilise un cookie d'authentification, que WebClient ne prend pas en charge. J'ai essayé de capturer le cookie et de m'authentifier en l'utilisant, donc maintenant je ne reçois pas l'erreur 403, mais à la place, je télécharge le code HTML du formulaire de connexion. Je dois trouver comment envoyer une demande de connexion, capturer le cookie d'authentification qui revient, puis l'utiliser lors de l'envoi de la demande DownloadFile.
System.Windows.Forms.MessageBox.Show(ex.Message);