【问题标题】:Merging Docx Files in Excel using VBA Runtime Error 462 The remote server machine, then File Corrupted使用 VBA 运行时错误 462 在 Excel 中合并 Docx 文件远程服务器计算机,然后文件损坏
【发布时间】:2015-03-16 17:07:15
【问题描述】:

帮助!有很多关于这个主题的帖子,我尝试了其中的大部分,但仍然无济于事。

基本上我只是想在指定文件夹中合并具有相同名称的 docx 文件的内容。每个文件都包含一个图像,1file:1image。第一次运行代码时出现错误(错误 462 远程服务器机器不存在或不可用),它指向

ActiveDocument.Range.InsertFile Filename:=myDir & nextFile

有人知道如何解决这个问题吗?请。这是我的代码:

Sub Merger()
    Dim firstFileStr As String
    Dim firstFile As String
    Dim nextFileStr As String
    Dim nextFile As String

    Dim xFlag As Boolean
    Dim myDir As String

    myDir = "C:\Users\User\Desktop\MergeFolder\"
    For iCtr = 1 To getRowCount
        firstFileStr = Sheet1.Cells(iCtr, 3).Value
        firstFile = Sheet1.Cells(iCtr, 1).Value

        xFlag = True
        Dim jCtr As Integer
        jCtr = 1

        Do While (xFlag)
            nextFileStr = Sheet1.Cells(iCtr + jCtr, 3).Value
            nextFile = Sheet1.Cells(iCtr + jCtr, 1).Value

            If StrComp(firstFileStr, nextFileStr, vbTextCompare) = 0 Then
                Dim WordApp As Word.Application 'word application
                Dim WordDoc As Word.Document    'word document

                If Not WordApp Is Nothing Then
                    WordApp.Quit
                End If

                Set WordApp = New Word.Application
                Set WordDoc = WordApp.Documents.Open(myDir & firstFile, ConfirmConversions = False, ReadOnly = False)

                Application.ScreenUpdating = False

                ActiveDocument.Range.InsertFile Filename:=myDir & nextFile

                WordDoc.SaveAs Filename:=myDir & "merged " & firstFileStr, FileFormat:=wdFormatDocument
                WordDoc.Close
                WordApp.Quit

                Set WordDoc = Nothing
                Set WordApp = Nothing

                xFlag = True
                jCtr = jCtr + 1
            Else
                xFlag = False
            End If
        Loop
    Next
End Sub

getRowCount 函数只是返回 Sheet1 包含的行数或行数。这里,

Function getRowCount() As Integer
    Dim rowCount As Integer
    rowCount = 0

    Range("A1").Select
    ' Set Do loop to stop when an empty cell is reached.
    Do While Not IsEmpty(ActiveCell)
        rowCount = rowCount + 1
        ' Step down 1 row from present location.
        ActiveCell.Offset(1, 0).Select
    Loop
    getRowCount = rowCount

End Function

现在,当我在上一个错误之后立即运行代码并且没有在任务管理器中杀死 MS Word 进程时,我收到另一个错误 Runtime Error 5792 The file似乎已损坏。检查新创建的文件,似乎代码

ActiveDocument.Range.InsertFile Filename:=myDir & nextFile

根本没用。 excel文件看起来像(B列为空)

Column    A         B     C 
alpha - 1.docx          alpha  
alpha -2.docx           alpha  
alpha - 3.docx          alpha  
alpha - 4.docx          alpha  
bravo - 1.docx          bravo  
bravo - 5.docx          bravo  
charlie- 2.docx         charlie  
delta - 3.docx          delta  
delta - 5.docx          delta  
epsilon - 9.docx        epsilon  
foxtrot - 1.docx        foxtrot         
merger.xlsm             0 
~$merger.xlsm             0

它应该将所有“Alpha - *.docx”合并到“Alpha - 1.docx”,bravo - 5.docx 到 bravo - 1.docx,等等

【问题讨论】:

  • 您确定该位置有文件吗? "C:\Users\User\Desktop..." 对我来说似乎不是一个有效的路径....
  • 是的,我确定。我自己创建了文件并将其放在那里。

标签: vba excel ms-word


【解决方案1】:

我做了一些研究,但问题是您将 word 文件以只读方式打开。确保 word doc 已关闭,并且您有权以写入权限打开它。

您可以在打开文件后的某个时间添加一个消息框来测试它是否以只读方式打开,但在您尝试将内容粘贴到其中之前:

MsgBox Worddoc.readonly

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2021-10-03
    相关资源
    最近更新 更多