Wiem, że już wcześniej widziałem odniesienia do tego problemu, ale wypróbowałem kilka sugestii i nadal otrzymuję błąd. Mam skoroszyt, który zbiera dane z innej książki i generuje raport. Następnie chcę utworzyć nowy skoroszyt, skopiować informacje z raportu do nowej książki, zapisać nową książkę i zamknąć ją, a następnie przejść do następnego raportu. Powinno to zrobić około 10 razy. W ramach mojego kodu, gdzie jestem kopiowanie i wklejanie arkuszy, ja otrzymuję błądBłąd automatyzacji programu Excel VBA: Wywołany obiekt odłączył się od klientów
Error -2147417848 Automation error The object invoked has disconnected from its clients
Sprawdziłem inne komentarze na temat tego błędu i próbował sugerowanych rozwiązań bez żadnych rezultatów. Interesującą rzeczą jest to, że czasami będzie to zrobić to przez 5 cykli kodu przed załamaniem, czasami tylko 2. Jedyna konsekwencja jest to, że zawsze łamie w tym samym miejscu
fromBook.Sheets("Report").Copy Before:=newBook.Sheets("Sheet1")
mam Option Explicit na górze moduł, i sprawdziłem, aby upewnić się, że nie ma żadnych globali w subie, do którego się włamuje. To powiedziawszy, jest to całkowicie możliwe, że coś przeoczyłem. Umieściłem również "zegar" w jednym punkcie, aby upewnić się, że arkusze programu Excel nie przechodzą jedna nad drugą.
Naprawdę mógłbym skorzystać z pomocy!
Oto kod mojego okrętu podwodnego:
Sub CreateAndSave(ByRef Reg As Integer, ByVal j As Integer)
Dim fromBook As Workbook
Dim fromSheet As Worksheet
Dim newBook As Workbook
Dim fileExists As Boolean
Dim i As Integer
Dim Holder As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set fromBook = Application.Workbooks("Region_Audit_Report")
Set newBook = Workbooks.Add
With newBook
.SaveAs Filename:="G:\DataTeam\ExcelDev\Audit Report\Region Workbooks\Region" & Reg & " " & Month(Date) & "-" & Day(Date) & "-" & Year(Date) & ".xlsx" _
, FileFormat:=xlOpenXMLWorkbook
End With
Set newBook = Application.Workbooks("Region" & Reg & " " & Month(Date) & "-" & Day(Date) & "-" & Year(Date) & ".xlsx")
fromBook.Sheets("Report").Copy Before:=newBook.Sheets("Sheet1")
fromBook.Sheets("MonthData").Copy After:=newBook.Sheets("Report")
newBook.Sheets("MonthData").Range("A1") = "Month"
newBook.Sheets("MonthData").Range("B1") = "Store#"
newBook.Sheets("MonthData").Range("C1") = "District"
newBook.Sheets("MonthData").Range("D1") = "Region"
newBook.Sheets("MonthData").Range("E1") = "Due Date"
newBook.Sheets("MonthData").Range("F1") = "Comp Date"
newBook.Sheets("MonthData").Range("G1") = "# of Errors"
newBook.Sheets("MonthData").Range("H1") = "Late?"
newBook.Sheets("MonthData").Range("I1") = "Complete?"
newBook.Sheets("MonthData").Range("A1:I1").Interior.ColorIndex = 43
newBook.Save
newBook.Close
Application.DisplayAlerts = True
End Sub
Spróbuj wyłączyć obliczenia u góry makra. Application.Calculation = xlCalculationManual (następnie włącz go ponownie na końcu) ((Miałem podobny problem i to naprawiło)) – Sam
Próbowałem. Nadal pękła w tym samym miejscu. – William