IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Sub fonctionne en VBA, pas en VBS


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Par défaut Sub fonctionne en VBA, pas en VBS
    Bonjour,

    J'ai codé une procédure pour écrire dans une liste d'un sharepoint mais j'aimerai la lancer en parallèle d'autres traitemets. Il me faut donc la place dans un VBS sauf que je dois faire quelquechose de faux car les changements n'aparaissent pas une fois le script exécuté (sans erreurs, depuis la cmd).

    Voyez vous ce qui cloche dans mon code?

    VBA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Sub Add_Item_SP(ListGUID As String, SharepointUrl As String, ValueID As String, ValueNC As String, _
        ValueIN_Date As String, ValueIN_Time As String, ValueOUT_Date As String, ValueOUT_Time As String, _
        ValueAction As String, ValueLast_Agent As String, ValueLoop As String, ValueMSN As String, _
        ValueTechnical_Status As String, ValueCA_Code As String, ValueCluster As String, ValueLeadtime As String)
     
    'For this code to works, add references to VBA: Microsoft XML, v6.0
        Dim objXMLHTTP As MSXML2.XMLHTTP
        Dim strListNameOrGuid As String
        Dim strBatchXml As String
        Dim strSoapBody As String
     
    'Create HTTP Object
        Set objXMLHTTP = New MSXML2.XMLHTTP
     
    'Prepare SOAP Request content (columns and values to be added)
        strBatchXml = _
            "<updates>" & _
                 "<Batch OnError=""Continue"" ListVersion=""1"">" & _
                     "<Method ID=""1"" Cmd=""New"">" & _
                         "<Field Name='ID'>New</Field>" & _
                         "<Field Name=""ID0"">" & ValueID & "</Field>" & _
                     "</Method>" & _
                "</Batch>" & _
            "</updates>"
    'Set SOAP/Webservice Parameters
        objXMLHTTP.Open "POST", SharepointUrl + "_vti_bin/Lists.asmx", False
        objXMLHTTP.setRequestHeader "Content-Type", "text/xml; charset=""UTF-8"""
        objXMLHTTP.setRequestHeader "SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems"
     
    'Set SOAP Envelope
        strSoapBody = _
        "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " & _
            "xmlns:xsd='http://www.w3.org/2001/XMLSchema' " & _
            "xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>" & _
            "<soap:Body>" & _
                "<UpdateListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>" & _
                    "<listName>" & ListGUID & "</listName>" & _
                    strBatchXml & _
                "</UpdateListItems>" & _
            "</soap:Body>" & _
        "</soap:Envelope>"
     
    'Send SOAP Request
        objXMLHTTP.send strSoapBody
        Debug.Print strSoapBody
        If objXMLHTTP.Status = 200 Then
            'do something with Response
            'MsgBox objXMLHTTP.responseText
        Else
            Debug.Print objXMLHTTP.Status
        End If
     
    'Var cleaning
        Set objXMLHTTP = Nothing
    End Sub
    VBS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Dim objXMLHTTP
    Dim strListNameOrGuid
    Dim strBatchXml
    Dim strSoapBody	
     
     
    'Create HTTP Object
    Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
     
    'Prepare SOAP Request content (columns and values to be added)
        strBatchXml = _
            "<updates>" & _
                 "<Batch OnError=""Continue"" ListVersion=""1"">" & _
                     "<Method ID=""1"" Cmd=""New"">" & _
                         "<Field Name='ID'>New</Field>" & _
                         "<Field Name=""ID0"">" & "111000000" & "</Field>" & _
                     "</Method>" & _
                "</Batch>" & _
            "</updates>"
     
    'Set SOAP/Webservice Parameters
        objXMLHTTP.Open "POST", "https://............../_vti_bin/Lists.asmx", False
        objXMLHTTP.setRequestHeader "Content-Type", "text/xml; charset=""UTF-8"""
        objXMLHTTP.setRequestHeader "SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems"
     
    'Set SOAP Envelope
        strSoapBody = _
        "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " & _
            "xmlns:xsd='http://www.w3.org/2001/XMLSchema' " & _
            "xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>" & _
            "<soap:Body>" & _
                "<UpdateListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>" & _
                    "<listName>" & "{1321E116-94A8-4757-A4AF-57CF09C6DE59}" & "</listName>" & _
                    strBatchXml & _
                "</UpdateListItems>" & _
            "</soap:Body>" & _
        "</soap:Envelope>"
     
    'Send SOAP Request
        objXMLHTTP.send strSoapBody
    wscript.echo objXMLHTTP.responseText
    'Var cleaning
        Set objXMLHTTP = Nothing

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    à vu d'œil, rien ne m'interpelle.


    que renvoie le responseText ?
    quelle est la version SharePoint ?
    as-tu essayé en passant directement par l'adresse du serveur plutôt que l'adresse du site (voir passer en http au lieu de https ?)

    le fait de faire une gestion d'erreur ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "<Batch OnError=""Continue"" ListVersion=""1"">"
    ne masquerait pas le problème rencontré sur la version VBS ?

    Tu as essayé de mettre sous variable les valeurs qui tu as écrites en dur dans le VBS ?
    Je pense notamment à ValueID et au GUID de ta Lists


    Autre chose, j'ai parfois eu des difficultés avec certains webservices qui injectent des données, et j'avais dû doubler un slash avant la portion d'adresse après le _vi_bin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    soapClient.Open "POST", webUrl & "_vti_bin//usergroup.asmx", False

Discussions similaires

  1. Fonction qui fonctionne sur VBA mais pas sur excel
    Par bol45 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/03/2014, 12h33
  2. Réponses: 4
    Dernier message: 15/11/2010, 21h31
  3. script fonctionnant sous IE pas sous FF
    Par thibotus01 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/03/2006, 18h07
  4. Réponses: 4
    Dernier message: 15/02/2006, 11h24
  5. Réponses: 12
    Dernier message: 15/02/2005, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo