我正在编写一个宏,当我运行程序时,它在读取第一行时运行正常但是当它循环并执行第二行时,我得到一个错误,说自动化问题和宏退出。我想知道发生了什么,它适用于第一个循环而不是第二个循环。
基本上,我希望宏执行它读取行8 - 25,如果单元格在单元格中具有日期(i)(我是8,9,10等等),则列B然后复制行和将其粘贴到另一个工作簿。
任何团体有什么想法吗?谢谢! :)
Sub Update()
Dim Request As Workbook
Dim blank As Worksheet
Dim oakfield As Workbook
Set Request = Workbooks("Request_Microbiological_Analysis(blank).xlsm")
Set blank = Request.Worksheets("blank")
Set oakfield = Workbooks.Open("O:\_Public\Quality_Oakfield.xlsm")
With ThisWorkbook
Dim i As Long
For i = 8 To 25
If IsDate(Cells(i, 2)) Then
blank.Cells(i, "A").Resize(, 12).Copy
oakfield.Worksheets("Microlog").Range("A" & Rows.Count).End(xlUp).Offset(1).Select
Selection.PasteSpecial xlPasteValuesAndNumberFormats
ActiveWorkbook.Save
ActiveWorkbook.Close
ElseIf IsEmpty(Cells(i, 2)) Then
MsgBox "Oakfield Quality Updated"
End If
Next i
End With
MsgBox "Quality System Updated"
End Sub
答案 0 :(得分:1)
此处的问题似乎是因为您在循环中关闭了ActiveWorkbook
,但之后又不再打开它。当工作簿对象未打开时,通常会发生automation error
。您需要等到循环后才能关闭工作簿。