You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无本地磁盘瘦客户端下,如何获取SharePoint打开的.docm字节数组

获取已打开Word文档(.docm)的字节数组无需保存到本地

针对你的场景——在无本地磁盘的瘦客户端从SharePoint打开.docm文档,需要获取修改后的文档字节数组并发送到Web服务——下面是可行的解决方案:

核心思路

你无法直接通过HTTP路径读取文件(因为这不是本地文件),但可以利用Word对象模型的SaveToStream方法,将当前打开的文档内容直接写入内存流,再从流中提取字节数组,完全不需要保存到本地磁盘。

完整VBA代码

替换你代码中bytFile = ??????????的部分,使用以下代码:

Dim bytFile() As Byte
Dim adodbStream As Object
Dim wordStream As Object

' 创建ADODB流对象(后期绑定,无需添加引用)
Set adodbStream = CreateObject("ADODB.Stream")
adodbStream.Type = 1 ' 设置为二进制类型
adodbStream.Open

' 将当前文档保存到流中(需Office 2010及以上版本支持)
Set wordStream = adodbStream
ThisDocument.SaveToStream wordStream

' 将流指针移到起始位置
adodbStream.Position = 0

' 读取流中的所有字节到数组
bytFile = adodbStream.Read

' 清理资源
adodbStream.Close
Set adodbStream = Nothing
Set wordStream = Nothing

关键说明

  • 版本要求:SaveToStream方法从Office 2010开始提供,如果你的环境使用更旧的Office版本,需要另寻方案(但瘦客户端通常会配备较新的Office套件)。
  • 后期绑定优势:使用CreateObject而非引用库,避免不同Office版本的兼容性问题。
  • 获取修改后的内容:这个方法会捕获当前文档的所有修改,而不是SharePoint上的原始文件,完全符合你的需求。

整合到你的现有代码

替换后你的完整代码应该是这样:

Dim filePath As String
Dim fileName As String
Dim fullFileName As String
filePath = ThisDocument.path
fileName = ThisDocument.Name
fullFileName = filePath + "/" + fileName

Dim bytFile() As Byte
Dim http
Dim userName As String
Dim url As String
Set http = CreateObject("MSXML2.ServerXMLHTTP")
userName = "Me"

' --- 读取文件(替换为流处理代码)
Dim adodbStream As Object
Dim wordStream As Object
Set adodbStream = CreateObject("ADODB.Stream")
adodbStream.Type = 1
adodbStream.Open
Set wordStream = adodbStream
ThisDocument.SaveToStream wordStream
adodbStream.Position = 0
bytFile = adodbStream.Read
adodbStream.Close
Set adodbStream = Nothing
Set wordStream = Nothing

' --- 发送文件到API服务器
url = "http://localhost/DocWebApi/Post?fileName=" & fileName & "&userName=" & userName
http.Open "POST", url, False
http.Send (bytFile)
http.waitForResponse 4000

内容的提问来源于stack exchange,提问作者klingu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 11:37:30