我有一个内置宏的MS-Word .docm
文档。在这个宏中,我想从文档中获取完整内容作为 字节数组 。内容应包含文档的完整信息,当我保存此内容时,我应该能够再次在Word中打开此文件。
我对vba
全新,并且不知道从哪里开始。我想将文档保存在临时文件夹中以读取此文件以获取内容,但也许有更好的方法。
答案 0 :(得分:1)
我建议您使用
ThisDocument.SaveAs "c:\temp\mydoc.docm"
然后只需使用该文件进行进一步操作。
或者以字节打印文件:
Sub SaveAsByteArray()
Dim thisFile As String
thisFile = ActiveDocument.FullName
Dim targetFile As String
targetFile = "C:\temp\doc.docm"
Dim sourceFileNum As Integer
Dim targetFileNum As Integer
Dim aByte As Byte
sourceFileNum = FreeFile
Open thisFile For Random Access Read As sourceFileNum Len = 1
targetFileNum = FreeFile
Open targetFile For Random Access Write As targetFileNum Len = 1
Do While Not EOF(sourceFileNum)
Get #sourceFileNum, , aByte
Put #targetFileNum, , aByte
Loop
Close sourceFileNum
Close targetFileNum
End Sub
但是这个子末尾会添加一个额外的字节,因此Excel会打开一个对话框,询问您是否要修复内容。如果选择是,则word可以打开文件。
或者把它放到一个数组中:
Sub SaveAsByteArray()
Dim thisFile As String
thisFile = ActiveDocument.FullName
Dim sourceFileNum As Integer
Dim arr()
Dim arr_n as long
arr_n = 0
Dim aByte As Byte
sourceFileNum = FreeFile
Open thisFile For Random Access Read As sourceFileNum Len = 1
Do While Not EOF(sourceFileNum)
Get #sourceFileNum, , aByte
ReDim Preserve arr(0 to arr_n)
arr(arr_n) = aByte
arr_n=arr_n+1
Loop
Close sourceFileNum
End Sub