[英]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.