Помощь! Было много постов на эту тему, и я пробовал большинство из них, но все равно безрезультатно.
В основном я просто пытаюсь объединить содержимое файлов docx с одинаковыми именами в указанной папке. Каждый файл содержит изображение, 1 файл: 1 изображение. Я получаю сообщение об ошибке, когда запускаю код в первый раз (ошибка 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 Файл кажется поврежденным. Проверяя только что созданные файлы, кажется, что код
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 и т. д.