В настоящее время я использую код для обновления файла с циклом, проходящим через несколько листов. До сих пор код работал гладко. При сегодняшнем запуске я столкнулся с «ошибкой во время выполнения» -2147319767 (80028029) «Ошибка автоматизации, недопустимая прямая ссылка или ссылка на некомпилированный тип».
Ошибка возникает в строке Workbooks("Upload.xlsm").Worksheets(branchName).Range("C7").PasteSpecial Paste:=xlPasteValues
и появляется на 6-й итерации цикла.
Я использовал On Error Resume Next
как временную меру для завершения прогона, так как это было необходимо сделать в то время.
После завершения 3 из итераций потерпели неудачу (шестая, седьмая и десятая). Эти три не имели никакой корреляции друг с другом (т.е. разные источники копирования, значения и т. Д.), Но имели другие итерации с точно таким же источником / значениями копирования, которые были успешно выполнены.
Выполнение другой команды копирования на этих листах позже привело к той же ошибке. В конце концов мне пришлось удалить и воссоздать лист, чтобы устранить ошибку.
' Uploads file update
fpath = Workbooks("TEG Rates.xlsm").Worksheets("Link List").Range("E3").Value
Workbooks.Open fpath & "Upload.xlsm"
For branchNo = 21 To 37
branchName = Workbooks("TEG Rates.xlsm").Worksheets("Link List").Range("A" & branchNo).Value
branchGroup = Workbooks("TEG Rates.xlsm").Worksheets("Link List").Range("B" & branchNo).Value
' Copy/Paste Buy & Sell
Workbooks("TEG Rates.xlsm").Worksheets(branchGroup).Range("D7:G111").Copy
Workbooks("Upload.xlsm").Worksheets(branchName).Range("C7").PasteSpecial Paste:=xlPasteValues
For no = 7 To 10
Workbooks("Upload.xlsm").Worksheets(branchName).Range("D" & no).Value = "=ROUND(100/C" & no & ",6)"
Next no
Workbooks("Upload.xlsm").Worksheets(branchName).Range("D14").Value = "=ROUND(100/C14,6)"
Workbooks("Upload.xlsm").Worksheets(branchName).Range("D15").Value = "=ROUND(10000/C15,4)"
Workbooks("Upload.xlsm").Worksheets(branchName).Range("D16").Value = "=ROUND(100/C16,6)"
Workbooks("Upload.xlsm").Worksheets(branchName).Range("D19").Value = "=ROUND(100/C19,6)"
Next branchNo
Workbooks("Upload.xlsm").Close SaveChanges:=True
Application.CutCopyMode = False
Хотя в настоящее время я могу использовать этот код, я обеспокоен тем, что моя команда столкнется с этим, пока меня нет. Что могло вызвать это / что я могу сделать, чтобы предотвратить это? Я буду готов предоставить файлы, если потребуется.