简体   繁体   English

使用VBA运行时错误462在Excel中合并Docx文件远程服务器计算机,然后文件损坏

[英]Merging Docx Files in Excel using VBA Runtime Error 462 The remote server machine, then File Corrupted

Help! 救命! There has been a lot of posts with regards to this subject, and I have tried most of them but still to no avail. 关于此主题有很多帖子,我尝试了其中的大多数,但仍然无济于事。

Basically I am just trying to merge the contents of docx files with the same names in a specified folder. 基本上,我只是想在指定的文件夹中合并具有相同名称的docx文件的内容。 Every file contains an image, 1file:1image. 每个文件都包含一个图像,即1file:1image。 I am getting an error when I run the code the first time (Error 462 Remote Server Machine does not exist or is unavailable) and it points at 第一次运行代码时出现错误(错误462远程服务器计算机不存在或不可用),它指向

ActiveDocument.Range.InsertFile Filename:=myDir & nextFile

Anybody knows how to work around this? 有人知道该如何解决吗? Please. 请。 Here is my code: 这是我的代码:

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

The function getRowCount is just to return the number or rows Sheet1 contains. 函数getRowCount只是返回Sheet1包含的数字或行。 Here, 这里,

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

Now when I run the code immediately after the previous error and without killing MS Word processes at the Task Manager, I get another error Runtime Error 5792 The file appears to be corrupted. 现在,当我在上一个错误之后立即运行代码并且没有在任务管理器中终止MS Word进程时,我又遇到了另一个错误运行时错误5792文件似乎已损坏。 Inspecting the newly created files, it seems that the code 检查新创建的文件,似乎代码

ActiveDocument.Range.InsertFile Filename:=myDir & nextFile

didn't work at all. 根本不起作用。 The excel file looks like (Column B is empty) 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

It's supposed to merge all " Alpha - *.docx " to " Alpha - 1.docx ", bravo - 5.docx to bravo - 1.docx, etc. 应该将所有“ Alpha-* .docx ”合并为“ Alpha-1.docx ”,bravo-5.docx合并为bravo-1.docx等。

I've done some research and the problem is that you have the word file open read only. 我已经进行了一些研究,问题是您将单词文件打开为只读。 Make sure that the word doc is closed and that you have access to open it with write permissions. 确保doc一词已关闭,并且您有权使用写入权限打开它。

You can test to see if it is open readonly by adding a messagebox sometime after you open the file, but before you try to paste stuff in it: 您可以通过在打开文件之后但尝试在其中粘贴内容之前的某个时间添加一个消息框来测试它是否以只读方式打开:

MsgBox Worddoc.readonly

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Excel 2010 VBA运行时错误462:远程服务器计算机不存在或不可用 - Excel 2010 VBA runtime Error 462: The remote server machine does not exist or is unavailable 在 VBA 中打开 Excel 文件:运行时错误“462”:远程服务器计算机不存在或不可用 - Opening Excel file in VBA: Run-time error ‘462’: The remote server machine does not exist or is unavialiable 使用Word的运行时错误462 Excel VBA - Runtime error 462 Excel VBA using Word 错误 462:通过 Excel VBA 使用 Word 时远程服务器计算机不存在 - Error 462: The remote server machine does not exist when working with Word via Excel VBA 宏仅在运行时错误462之前运行一次excel vba:远程服务器不存在或不可用 - Macro only runs once excel vba before Runtime error 462: The remote server does not exist or is unavailble 使用 Excel 对象访问代码,错误:462 远程服务器机器不存在或不可用 - Access code using Excel object, error: 462 The remote server machine does not exist or is unavailable 当Internet Explorer自动化脚本运行时,在VBA中遇到“错误462:远程服务器计算机不存在或不可用” - Encountering “Error 462: The remote server machine does not exist or is unavailable” in VBA when an internet explorer automation script is running 通过 Outlook 发送 email 后 VBA 错误 462“远程服务器计算机不存在或不可用” - VBA error 462 “The remote server machine does not exist or is unavailable” after sending email via Outlook 第二次在EXCEL中运行VBA代码时,出现“运行时错误462:远程服务器计算机不存在或不可用”(获取访问表) - “Run-time error 462: The remote server machine does not exist or is unavailable” when running VBA code in EXCEL for a second time (get ACCESS table) 第二次运行VBA代码时,出现“运行时错误462:远程服务器计算机不存在或不可用” - “Run-time error 462 : The remote server machine does not exist or is unavailable” when running VBA code a second time
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM