Automating SharePoint with VBScript

FDN » SharePoint » Automating SharePoint with VBScript

Automating SharePoint with VBScript

You can automate SharePoint Team Services from VBScript using the SOAP web services and the XMLHTTP COM object.

Get All Lists from a Site

' Retrieve all lists from a SharePoint site via SOAP
Dim strURL, strSOAP
strURL = "http://sharepoint.corp.flamenet.io/_vti_bin/Lists.asmx"

strSOAP = "<?xml version=""1.0"" encoding=""utf-8""?>" & vbCrLf & _
    "<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" & vbCrLf & _
    "  <soap:Body>" & vbCrLf & _
    "    <GetListCollection xmlns=""http://schemas.microsoft.com/sharepoint/soap/"" />" & vbCrLf & _
    "  </soap:Body>" & vbCrLf & _
    "</soap:Envelope>"

Dim objHTTP
Set objHTTP = CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "POST", strURL, False
objHTTP.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
objHTTP.setRequestHeader "SOAPAction", _
    "http://schemas.microsoft.com/sharepoint/soap/GetListCollection"
objHTTP.Send strSOAP

If objHTTP.Status = 200 Then
    Dim objDoc
    Set objDoc = CreateObject("MSXML2.DOMDocument")
    objDoc.loadXML objHTTP.responseText

    Dim objLists
    Set objLists = objDoc.getElementsByTagName("List")

    Dim i
    For i = 0 To objLists.length - 1
        WScript.Echo objLists(i).getAttribute("Title") & _
            " (Items: " & objLists(i).getAttribute("ItemCount") & ")"
    Next
Else
    WScript.Echo "Error: " & objHTTP.Status & " " & objHTTP.statusText
End If

Add an Item to a SharePoint List

' Add a new task to the Tasks list via UpdateListItems
Dim strSoapAdd
strSoapAdd = "<?xml version=""1.0"" encoding=""utf-8""?>" & vbCrLf & _
    "<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" & vbCrLf & _
    "  <soap:Body>" & vbCrLf & _
    "    <UpdateListItems xmlns=""http://schemas.microsoft.com/sharepoint/soap/"">" & vbCrLf & _
    "      <listName>Tasks</listName>" & vbCrLf & _
    "      <updates>" & vbCrLf & _
    "        <Batch OnError=""Continue"">" & vbCrLf & _
    "          <Method ID=""1"" Cmd=""New"">" & vbCrLf & _
    "            <Field Name=""Title"">Deploy Exchange SP3</Field>" & vbCrLf & _
    "            <Field Name=""Status"">Not Started</Field>" & vbCrLf & _
    "            <Field Name=""Priority"">(1) High</Field>" & vbCrLf & _
    "            <Field Name=""DueDate"">2001-12-31</Field>" & vbCrLf & _
    "          </Method>" & vbCrLf & _
    "        </Batch>" & vbCrLf & _
    "      </updates>" & vbCrLf & _
    "    </UpdateListItems>" & vbCrLf & _
    "  </soap:Body>" & vbCrLf & _
    "</soap:Envelope>"

Set objHTTP = CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "POST", strURL, False
objHTTP.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
objHTTP.setRequestHeader "SOAPAction", _
    "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems"
objHTTP.Send strSoapAdd

If objHTTP.Status = 200 Then
    WScript.Echo "Task added successfully."
Else
    WScript.Echo "Error: " & objHTTP.Status
End If
« Developer Network ‹ SharePoint SOAP API Reference SharePoint List Data Access ›