title: Export Project List from Clarity PPM To Excel
body: <p>Would anyone know how to get <strong>list of project</strong> from Clarity PPM to excel using the SOAP Interfaces (XOG PPM) and VBA (Excel) ?</p>
  
  <p>I have been able to use the interface to log successfully but cannot go further...XML documentation is not clear enough for me.</p>
  
  <p>Here is how I could Log and Get Session ID</p>
  
  <pre><code>Sub Soap_LOGIN()
  ' RKO
  ' add MS XML v6 reference : tool/Reference
  
   'Set and instantiate our working objects
      Dim Req As Object
      Dim sEnv As String
      Dim Resp As New MSXML2.DOMDocument60
      Set Req = CreateObject("MSXML2.XMLHTTP")
      Set Resp = CreateObject("MSXML2.DOMDocument.6.0")
      Req.Open "Post", "http://SERVER/niku/xog", False
      Req.setRequestHeader "Content-Type", "text/plain; charset=UTF-8"
      Req.setRequestHeader "soapaction", "http://www.niku.com/xog/Query/Login" ' per the documentation
      Req.setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
      Req.setRequestHeader "Connection", "keep -alive"
  
  
  
   ' we create our SOAP envelope for submission to the Web Service
       sEnv = sEnv &amp; "&lt;?xml version=""1.0"" encoding=""utf-8""?&gt;"
       sEnv = sEnv &amp; "&lt;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/""&gt;"
       sEnv = sEnv &amp; " &lt;soap:Body&gt;"
       sEnv = sEnv &amp; "  &lt;Login xmlns=""http://www.niku.com/xog/Query""&gt;"
       sEnv = sEnv &amp; "   &lt;TenantID&gt;Clarity&lt;/TenantID&gt;"
       sEnv = sEnv &amp; "   &lt;Username&gt;XXXX&lt;/Username&gt;"
       sEnv = sEnv &amp; "   &lt;Password&gt;YYYY&lt;/Password&gt;"
       sEnv = sEnv &amp; "  &lt;/Login&gt;"
       sEnv = sEnv &amp; " &lt;/soap:Body&gt;"
       sEnv = sEnv &amp; "&lt;/soap:Envelope&gt;"
       MsgBox sEnv
  
  
  ' Send SOAP Request
      Req.send (sEnv)
  
  ' Display results in MessageBox
      'MsgBox Req.responseText
      Resp.LoadXML Req.responseText
      MsgBox (Req.responseText)
      MsgBox Resp.Text '&lt;--- This is the Session ID
  
  
    'clean up code
      Set Req = Nothing
      Set Resp = Nothing
  
  
  
  End Sub
  </code></pre>