J'ai un classeur Excel qui, à l'aide d'un code VBA ouvrant un autre classeur, copie des données dans l'original, puis ferme le deuxième classeur.
Lorsque je ferme le deuxième classeur (avec Application.Close
), je reçois un message pour:
Voulez-vous enregistrer le presse-papiers.
Existe-t-il une commande dans VBA qui contournera cette invite?
Je peux offrir deux options
Sur la base de votre description, je suppose que vous faites quelque chose comme
Set wb2 = Application.Workbooks.Open("YourFile.xls")
wb2.Sheets("YourSheet").[<YourRange>].Copy
ThisWorkbook.Sheets("SomeSheet").Paste
wb2.close
Si tel est le cas, vous n'avez pas besoin de copier via le presse-papiers. Cette méthode copie directement de la source à la destination. Aucune donnée dans le presse-papiers = pas d'invite
Set wb2 = Application.Workbooks.Open("YourFile.xls")
wb2.Sheets("YourSheet").[<YourRange>].Copy ThisWorkbook.Sheets("SomeSheet").Cells(<YourCell")
wb2.close
Vous pouvez empêcher toutes les alertes pop-up en configurant
Application.DisplayAlerts = False
[Modifier]
Dim rSrc As Range
Dim rDst As Range
Set rSrc = wb2.Sheets("YourSheet").Range("YourRange")
Set rDst = ThisWorkbook.Sheets("SomeSheet").Cells("YourCell").Resize(rSrc.Rows.Count, rSrc.Columns.Count)
rDst = rSrc.Value
Si je peux ajouter une solution supplémentaire: vous pouvez simplement annuler le presse-papiers avec cette commande:
Application.CutCopyMode = False
J'ai déjà rencontré ce problème par le passé - à première vue, si vous n'avez pas réellement besoin du presse-papiers au moment de quitter, vous pouvez donc utiliser la même solution simple que celle que j'avais auparavant. Vient de vider le presse-papiers. :)
ActiveCell.Copy
Chris
Il suffit de vider le presse-papiers avant de fermer.
Application.CutCopyMode=False
ActiveWindow.Close
Il y a un travail simple autour. L'alerte n'apparaît que lorsque vous avez une grande quantité de données dans votre presse-papiers. Copiez simplement une cellule au hasard avant de fermer le classeur et elle ne s'affichera plus!
Si vous ne souhaitez pas enregistrer les modifications et que vous ne voulez pas que Enregistrer l'invite lors de l'enregistrement d'un fichier Excel à l'aide d'une macro, ce morceau de code peut vous être utile.
Sub Auto_Close()
ThisWorkbook.Saved = True
End Sub
Étant donné que la propriété Saved
est définie sur True
, Excel répond comme si le classeur avait déjà été enregistré et qu'aucune modification ne s'était produite depuis ce dernier enregistrement; par conséquent, aucune invite d'enregistrement.