简体   繁体   中英

Get byte Array from current opened downloaded Word Document .docm from Sharepoint, without save to local drive

How can I get the byte array of the opened Word Document (.docm) without saving it to a local drive first. The document will be opened on a Thin Client without any local drive from SharePoint. When the user want to save the changes, I need to send the byte array to a web-service to process it. (Not back to SharePoint).

Dim filePath As String
Dim fileName As String
Dim fullFileName As String
filePath = ThisDocument.path
fileName = ThisDocument.Name
fullFileName = filePath + "/" + fileName
  • the value of filePath is 'http://webiste/application'
  • the value of fileName is 'theOpenFileName.docm'
  • the value of fullFileName is 'http://webiste/application/theOpenFileName.docm'

How can I get the whole file as a byte array so I can send it to the web-service like this:

Dim bytFile() As Byte
Dim http
Dim userName As String
Dim url As String

Set http = CreateObject("MSXML2.ServerXMLHTTP")
userName = "Me"
 
'--- read file
bytFile = ?????????? 

'--- send the file to the API server
url = "http://localhost/DocWebApi/Post?fileName=" & fileName & "&userName=" & userName
 
http.Open "POST", url, False
http.Send (bytFile)
http.waitForResponse 4000

Thanks in advance!

Try the next approach, please:

Sub testByteArray()
  Dim bytFile() As Byte, strDocShare As String
  Dim fileDoc As Integer: fileDoc = FreeFile
  
  strDocShare = Application.GetOpenFilename("Office Documents (*.docm),*.docm", , "Please select document to be processed...")
  If strDocShare = False Then Exit Sub 'If no document has been selected

  Open strDocShare For Binary Access Read As #fileDoc
     ReDim bytFile(0 To LOF(fileDoc) - 1)
     Get #fileDoc, , bytFile
  Close #fileDoc
End Sub

If the document will be open, the above code may return an error. A method to determine if a shared document/workbook is open by other user, uses some similar code and catches the error...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM