Le code VBA n'est pas stable

Il a commencé lundi cette semaine, lorsque j'ai fini avec mon code, le but de ces codes était de tirer des données d'une feuille spécifique dans un dossier spécifique de toutes les feuilles de calcul de ce dossier.

Mais juste la nuit dernière, il a commencé à se briser la feuille de calcul excel chaque fois que j'avais poussé le button d'exécution.

Une idée pourquoi?

Option Explicit Sub ImportSheet() Dim i As Integer Dim SourceFolder As Ssortingng Dim FileList As Variant Dim GrabSheet As Ssortingng Dim FileType As Ssortingng Dim ActWorkBk As Ssortingng Dim ImpWorkBk As Ssortingng Dim NoImport As Boolean Application.EnableEvents = False SourceFolder = "C:\Users\Jarryd.Ward\Desktop\Test\" FileType = "*.xlsx" GrabSheet = "Summary" FileList = ListFiles(SourceFolder & "/" & FileType) Application.ScreenUpdating = False ActWorkBk = ActiveWorkbook.Name NoImport = False For i = 1 To UBound(FileList) Workbooks.Open (SourceFolder & "\" & FileList(i)) ImpWorkBk = ActiveWorkbook.Name On Error Resume Next ActiveWorkbook.Sheets(GrabSheet).Select If Err > 0 Then NoImport = True GoTo nxt End If Err.Clear On Error GoTo 0 ActiveWorkbook.Sheets(GrabSheet).Copy After:=Workbooks(ActWorkBk).Sheets(Workbooks(ActWorkBk).Sheets.Count) ActiveSheet.Name = ImpWorkBk On Error Resume Next ActiveSheet.Name = FileList(i) & " - " & GrabSheet Err.Clear On Error GoTo 0 nxt: Workbooks(ImpWorkBk).Activate Application.DisplayAlerts = False ActiveWorkbook.Saved = True ActiveWorkbook.Close SaveChanges:=False Application.DisplayAlerts = True Workbooks(ActWorkBk).Activate Next i Application.ScreenUpdating = True End Sub 

Essayez d'ouvrir et de fermer vos files de cette façon pour voir si cela vous aide. Il devrait minimiser les appels pour activer ceci ou cela. Et la fermeture par variable à la place de la feuille d'activité assurera que votre code n'essaye pas de fermer le classur principal par accident.

 Sub testOpen() Dim manyWBs As Workbook Dim myWB As Workbook Set myWB = ThisWorkbook For Each file In folder Set manyWBs = Workbooks.Open("C:\temp\filename") ' do events....... manyWBs.Worksheets("Sheet1").Range("A1:B13").Copy _ Destination:=myWB.Worksheets("Sheet1").Range("A1:b13") manyWBs.Close Set manyWBs = Nothing Next file Set myWB = Nothing End Sub