0
J'ai ce code qui est utilisé pour obtenir un fichier prêt à enregistrer et à enregistrer, mais Excel provoque une erreur et se ferme. J'ai épinglé l'erreur à la ligne .execute.Erreur lors de l'utilisation de Application.FileDialog (msoFileDialogSaveAs)
Pourquoi cela cause-t-il le crash et y a-t-il un travail?
Sub Save_close()
Dim Ws As Worksheet
Dim Wb As Workbook
Application.DisplayAlerts = False
MsgBox "Do you want to Save a new copy", vbYesNo, "Save New"
If vbYes Then
Workbooks("A380 Master.xlsm").Sheets("OutPutSheet").Range("C:C", "F:F").Delete
For Each Ws In ActiveWorkbook.Sheets
If Not Ws.Name = "OutputSheet" Or Ws.Name = "Sheet1" Then
Ws.Delete
ElseIf Ws.Name = "OutputSheet" Or Ws.Name = "Sheet1" Then
End If
Next Ws
With Application.FileDialog(msoFileDialogSaveAs)
.Show
.Execute
End With
ElseIf vbNo Then
'Workbooks("A380 Master.xlsm").Sheets("OutPutSheet").Range("A1").Select
End If
End Sub
avez-vous une raison d'utiliser 'FileDialog'? essayez avec [cette méthode Workbook.SaveAs'] (http://msdn.microsoft.com/en-us/library/ff841185%28v=office.14%29.aspx) à la place. –
Deux autres astuces: 1. votre «if» à l'intérieur de la boucle ne semble pas logique. 2. Lorsque vous souhaitez supprimer toutes les feuilles répondant aux critères, vous devez utiliser différents types de boucles: 'Pour i = Activeworkbook.Sheets.Count à 1 étape -1' et ensuite vous devrez changer' Ws variable' dans la boucle en Sheets (i) 'référence d'objet. –
En outre, il semble que vous mélangez des références à 'Workbooks (" A380 Master.xlsm ")' et 'ActiveWorkBook': Est-ce que ces entités sont distinctes? Sinon, vous pourriez envisager de vous y référer d'une seule façon (par exemple, ThisWorkBook) –