У меня есть макрос VBA, который открывает каждый текстовый документ в папке, находит определенную строку в документе и затем вставляет ее в открытую электронную таблицу. Все документы Word имеют один и тот же шаблон и содержат соответствующую строку.
Он работает нормально для первых 4 или 5 документов, а затем я получаю сообщение об ошибке «Не удалось выполнить метод pastespecial класса диапазона». Документ, на котором он отказывается, ни в коем случае не отличается от других, и если я удаляю этот документ, то он выходит из строя на другом. Может кто-нибудь помочь, пожалуйста? Я новичок в VBA, поэтому мой код вполне может быть мусором.
Вот полный код:
Sub readForml()
Dim wdApp As New Word.Application
Dim myDoc As Word.Document
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Dim i As Integer
Dim myWkSht As Worksheet
wdApp.Visible = False
'Optimize Macro Speed
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
myExtension = "*.docx*"
Set myWkSht = ActiveSheet
myPath = "path_to_folder"
myFile = Dir(myPath & myExtension)
'set i to be furst blank row
i = myWkSht.Cells(myWkSht.Rows.Count, 1).End(xlUp).Row
'Loop through each Excel file in folder
Do While myFile <> ""
'Set variable equal to opened workbook
Set myDoc = wdApp.Documents.Open(Filename:=myPath & myFile)
DoEvents
With myDoc.Content
.Find.ClearFormatting
With .Find
.Text = "number[0-9]{4}"
.Format = False
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = True
.Execute
End With
.Copy
myWkSht.Range("A" & i).PasteSpecial xlPasteValues
End With
myDoc.Close SaveChanges:=False
i = i + 1
'Get next file name
myFile = Dir()
Loop
ResetSettings:
'Reset Macro Optimization Settings
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Заранее спасибо "