从当前word文档获取完整内容

时间:2015-01-19 08:47:51

标签: vba ms-word

我有一个内置宏的MS-Word .docm文档。在这个宏中,我想从文档中获取完整内容作为 字节数组 。内容应包含文档的完整信息,当我保存此内容时,我应该能够再次在Word中打开此文件。

我对vba全新,并且不知道从哪里开始。我想将文档保存在临时文件夹中以读取此文件以获取内容,但也许有更好的方法。

1 个答案:

答案 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