I found the solution to my problem soon after I posted this, so 2 years later this is what I wrote. Hope it helps someone out there.
I've included a few references and some comments that might also help someone one day too.
Code:
' http://stackoverflow.com/questions/3...repoint-doclib
' Find Front Page Server Extentions version here! Currently 15.0.0.4517
' http://websrvstg:2015/_vti_pvt/service.cnf
' Good Atricle found here: http://thuansoldier.net/?p=4298
' http://websrvstg:2015/_vti_pvt/service.cnf -> returns this
' vti_encoding:SR|utf8-nl
' vti_extenderversion:SR|15.0.0.4517
' http://websrvstg:2015/_vti_inf.html -> View Source gets this
' <!-- FrontPage Configuration Information
' FPVersion = "15.00.0.000"
' FPShtmlScriptUrl = "_vti_bin/shtml.dll/_vti_rpc"
' FPAuthorScriptUrl = "_vti_bin/_vti_aut/author.dll"
' FPAdminScriptUrl = "_vti_bin/_vti_adm/admin.dll"
' TPScriptUrl = "_vti_bin/owssvr.dll"
' -->
' http://webdesign.about.com/library/b...ding_table.htm
' %3a as a Colon :
' %2f is a slash /
' %5f is unserscore _
' %7C is Pipe |
' %3b is semi colon ;
' %3bSW%7c is ;SW|
' Adding Metadata explained below.
' Inside the above script, the metadata "vti_title" is added.
' You can add further metadata properties, by adding them inside the meta_info=[...] brackets.
' E.g. ";meta_info=[vti_title%3bSW%7c" + Escape(title) + ";project%3bSW%7c" + Escape(project) + "]]".
' You must have a custom field called project in the document library.
' "SW" for String
' "BW" for Boolean (true/false)
' "IW" for Integer
' "TR" for Date. Must use dd mmm yyyy hh:nn:ss format even if it's a Date Only field
strMetaData = "vti_title" & "%3b" & "SW" & "%7c" & URLEncode(!Title, True) 'FixStringForSQL(strFileName)
strMetaData = strMetaData & ";Originator" & "%3b" & "SW" & "%7c" & URLEncode(!Originator, True)
strMetaData = strMetaData & ";Project" & "%3b" & "IW" & "%7c" & CStr(m_colProjects.Item(Trim(!ProjectNumber)))
If !TransmittalNumber <> "" Then
strMetaData = strMetaData & ";Transmittal+Number" & "%3b" & "SW" & "%7c" & URLEncode(!TransmittalNumber, True)
End If
If Len(Nz(!TransmittalDate, "")) > 0 Then
strMetaData = strMetaData & ";Transmittal+Date" & "%3b" & "TR" & "%7c" & Format(ToUTC(Trim(!TransmittalDate)), "dd mmm yyyy hh:nn:ss")
End If
strMetaData = strMetaData & ";Vendor+Data+ID" & "%3b" & "SW" & "%7c" & URLEncode(!VendorDataID, True)
strMetaData = strMetaData & ";Facility+Code" & "%3b" & "IW" & "%7c" & CStr(m_colFacilityCodes.Item(!FacilityCode))
If !DocumentType <> "" Then
strMetaData = strMetaData & ";Document+Type" & "%3b" & "IW" & "%7c" & CStr(m_colDocumentTypes.Item(!DocumentType))
End If
strMetaData = strMetaData & ";Document+Revision" & "%3b" & "SW" & "%7c" & !DocumentRevision
If Nz(!RevisionDate, "") <> "" Then
strMetaData = strMetaData & ";Revision+Date" & "%3b" & "TR" & "%7c" & Format(ToUTC(!RevisionDate), "dd mmm yyyy hh:nn:ss")
End If
strMetaData = strMetaData & ";Approval+Status" & "%3b" & "SW" & "%7c" & !ApprovalStatus
strMetaData = strMetaData & ";PO+Number" & "%3b" & "SW" & "%7c" & URLEncode(!PONumber, True)
strMetaData = strMetaData & ";PO+Issuer" & "%3b" & "SW" & "%7c" & URLEncode(!POIssuer, True)
If Nz(!TagNumber, "") <> "" Then
strMetaData = strMetaData & ";Tag+Number" & "%3b" & "SW" & "%7c" & URLEncode(Nz(!TagNumber, ""), True)
End If
strMetaData = strMetaData & ";Cross+Reference" & "%3b" & "SW" & "%7c" & URLEncode(Nz(!CrossReference, ""), True)
strHeader = "method=put+document%3a" & str_vti_extenderversion & _
"&service_name=%2f" & _
"&document=[document_name=" & FixStringForSQL(Replace(strListName, " ", "") & "/" & strFileName) & _
";meta_info=[" & strMetaData & "]]" & _
"&put_option=overwrite,createdir,migrationsemantics" & _
"&comment=" & _
"&keep%5fchecked%5fout=false" & vbLf
ByteArray = StringToByteArray(strHeader)
Set Stream1 = New ADODB.Stream
Stream1.Open
Stream1.Type = adTypeBinary
Stream1.Write ByteArray
Set Stream2 = New ADODB.Stream
Stream2.Open
Stream2.Type = adTypeBinary
Stream2.LoadFromFile strFullfileName
Stream2.CopyTo Stream1
Stream1.position = 0
Stream2.Close
strTargetURL = strSharePointFileName
' Upload the data to the server, false means synchronous.
Set objXML = New MSXML2.XMLHTTP
objXML.Open "POST", strSharePointUrl + "/_vti_bin/_vti_aut/author.dll", False
objXML.setRequestHeader "Content-Type", "application/x-vermeer-urlencoded"
objXML.setRequestHeader "X-Vermeer-Content-Type", "application/x-vermeer-urlencoded"
objXML.setRequestHeader "User-Agent", "FrontPage"
On Error Resume Next
objXML.send Stream1
Stream1.Close
If Err.Number <> 0 Then
'Release the handle on the files
Set objXML = Nothing
Set Stream1 = Nothing
ErrorNumber = Err.Number
ErrorMessage = Err.Description
.Edit
!ErrorMessage = !ErrorMessage & "File:" & strFileName & " (" & Format(dblFileSize, "#,###") & " KB) Error:" & ErrorMessage
.Update
g_rstADODB.Close
GoTo ExitHereVendorData
End If
On Error GoTo ErrorHandler
'Debug.Print "Upload: " & objXML.Status & " " & objXML.StatusText '& " :: " & objXML.responseText
If objXML.Status = 200 Then
If InStr(objXML.responseText, "successfully") = 0 And Len(objXML.responseText) > 0 Then
If objXML.responseText <> "" Then
.Edit
!ErrorMessage = !ErrorMessage & "File:" & strFileName & " Status:" & objXML.Status & " XML Error:" & objXML.responseText
.Update
g_rstADODB.Close
GoTo ExitHereVendorData
Else
.Edit
!ErrorMessage = !ErrorMessage & "File:" & strFileName & " Status:" & objXML.Status & " Error: No Error returned. Check File in SharePoint!"
.Update
'Carry on!
End If
Else
' Check In Document whether it needs it or not!
strHeader = "method=checkin+document%3a" & str_vti_extenderversion & _
"&service_name=%2f" & _
"&document=[document_name=" & FixStringForSQL(Replace(strListName, " ", "") & "/" & strFileName) & _
"&comment=MS Access Check In" & _
"&keep%5fchecked%5fout=false" & vbLf
Set objXML = New MSXML2.XMLHTTP
objXML.Open "POST", strSharePointUrl + "/_vti_bin/_vti_aut/author.dll", False
objXML.setRequestHeader "Content-Type", "application/x-vermeer-urlencoded"
objXML.setRequestHeader "X-Vermeer-Content-Type", "application/x-vermeer-urlencoded"
objXML.setRequestHeader "User-Agent", "FrontPage"
objXML.send strHeader
'Debug.Print "CheckIn: " & objXML.Status & " " & objXML.StatusText
'At ths point we know the SharePoint Metadata was updated so update the temporary record
.Edit
!MetadataUpdated = True
!UpdateDate = Now
.Update
End If
Else
.Edit
!ErrorMessage = !ErrorMessage & "File:" & strFileName & " Status:" & objXML.Status & " XML Error:" & objXML.responseText
.Update
g_rstADODB.Close
GoTo ExitHereVendorData
End If
'Clear Memory
Set objXML = Nothing
Set Stream1 = Nothing
Set Stream2 = Nothing