2017-04-13 3 views
0

J'essaie d'interroger une feuille de calcul Excel enregistrée sur SharePoint, comme une base de données.
Pour une raison quelconque, je suis en mesure d'interroger la feuille de calcul Excel parfaitement, quand il s'agit d'une feuille de calcul locale, mais pas quand il est sur SharePoint.Requête feuille de calcul Excel enregistrée sur SharePoint via VBScript dans UFT utilisant ADO OLEDB modèle

Je suis capable d'utiliser l'objet Excel.Application pour ouvrir la feuille de calcul à partir de VBScript dans UFT, mais pas lorsque j'ai mis le lien SharePoint dans ma source de données de chaîne de connexion. Je l'ai essayé ce qui suit:

  • barres obliques Changement de / à \ et prenant l'espace blanc en mettant en %20 sans chance.
  • Modification de la "Source de données" en "Base de données", y compris la connexion de confiance et l'inclusion du nom d'utilisateur et du mot de passe. Voici ma chaîne de connexion/code:

    (Fails) ExcelFileLocation = "http://sharepointlocation/folders/spreadsheet.xlsx"

    (Travaux) ExcelFileLocation = "C:\projects\spreadsheet.xlsx"

Quand je fais ces lignes, elle ouvre la feuille de calcul à partir de SharePoint, mais j'essaie d'éviter traversant les lignes/colonnes pour trouver les données que je veux.

TemExcel.Workbooks.Open "http://sharepointlocation/folders/spreadsheet.xlsx" 
TempExcel.ActiveWorkbook.SaveAs "C:\projects\Temp.xlsx" 
TempExcel.Application.Quit 
objConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ExcelFileLocation & ";Extended Properties=""Excel 8.0;HDR=Yes;"";" 
objRecordSet.Open ExcelQuery,objConnection,adOpenStatic,adLockOptimistic,adCmdTest 
+1

Vous avez mentionné changer la direction des barres obliques n'a pas aidé. Avez-vous essayé d'utiliser le chemin UNC vers l'emplacement SharePoint? Quelque chose comme '\\ sharepointlocation \ folder \ spreadsheet.xlsx' (notez la double barre oblique et l'absence d'un préfixe de protocole). Une autre option consiste à mapper une lettre de lecteur au chemin UNC de la bibliothèque SharePoint, puis essayez d'ouvrir le fichier comme vous le feriez avec un fichier sur votre machine locale. – Thriggle

+0

Je viens d'essayer ça et ça marche! Très appréciée. Je pensais que j'avais déjà essayé, mais je pense que je n'ai pas tout changé complètement à UNC. Merci encore! –

+0

Super! Je vais l'ajouter comme réponse. (Je ne voulais pas le proposer comme réponse si vous l'aviez déjà essayé et cela n'avait pas fonctionné.) – Thriggle

Répondre

0

Utilisez le chemin UNC vers l'emplacement SharePoint.

Quelque chose comme \\sharepointlocation\folder\spreadsheet.xlsx

(Notez la double barre oblique et l'absence d'un préfixe de protocole).

Une autre option consiste à mapper une lettre de lecteur au chemin UNC de la bibliothèque SharePoint, puis essayez d'ouvrir le fichier comme vous le feriez pour un fichier sur votre ordinateur local.

+0

Cela fonctionne, sauf le problème suivant que j'ai noté ci-dessus dans le commentaire. Je suis coincé sur la boîte de dialogue de sécurité Windows qui apparaît généralement lorsque vous le faites manuellement. Savez-vous comment intégrer la sécurité d'intégration dans une chaîne de connexion lors de l'utilisation d'Excel comme source de données? –

+0

Malheureusement, le chemin UNC utilise le service WebClient (basé sur WebDAV), qui (selon [cette question] (http://stackoverflow.com/questions/38020887/vba-sharepoint-authentication-for-drive-mapping)) ne supporte pas le cookie d'authentification habituel, d'où l'invite.Vous pourriez éventuellement utiliser un script de démarrage qui naviguerait vers le répertoire SharePoint souhaité lorsque l'ordinateur redémarrera (pour essayer de forcer l'authentification), mais cela pourrait être trop envahissant pour vos utilisateurs finaux. – Thriggle

+0

Merci pour les heads up! J'ai un plan B juste pour ouvrir le fichier via l'objet Excel.Application et enregistrer dans un fichier temporaire sur le disque local, qui devrait prendre soin de cela. J'essayais juste d'éviter cela, mais cela marchera très bien pour la solution dont j'ai besoin. Merci pour votre aide! –