Effacer la copy du file actuel des données

Il existe un stream de travail pour remplir une feuille et l'envoyer par courrier lorsque vous avez terminé. La méthode de courrier électronique enverra la fiche en tant que pièce jointe, mais elle devrait créer directement une nouvelle copy de la feuille d'où toutes vos données sont supprimées.

Je peux effacer la feuille actuelle, mais c'est faux, car j'ai besoin d'effacer la nouvelle feuille. J'ai lu sur l'exécution de macros sur d'autres classurs, mais il ne parvient pas à exécuter la macro. Quelle est la meilleure solution?

Sub SendData_Click() If MsgBox("Sure to send?", vbYesNo, "Confirm") = vbYes Then ' Save current sheet ActiveWorkbook.Save ' Send the current file Mail_ActiveSheet ' Mark this sheet as sent Worksheets("Data").Range("B6").Value = True ' Create a new emptied version Create_New_Copy MsgBox "Your data is sent" End If End Sub Sub Create_New_Copy() Dim Wb As Workbook Dim NewFileName As Ssortingng Dim FileExtStr As Ssortingng Dim FilePath As Ssortingng Set Wb = ActiveWorkbook NewFileName = "FileNameHere " & Format(DateAdd("d", 1, Now), "yyyy-mm-dd") FileExtStr = "." & LCase(Right(Wb.Name, Len(Wb.Name) - InStrRev(Wb.Name, ".", , 1))) FilePath = ActiveWorkbook.Path & "\" & NewFileName & FileExtStr ' # This is the problem, how to clear only the new file?? ' Clear_Sheet_Invoices ' Save this sheet as the new file Wb.SaveCopyAs FilePath End Sub Sub Clear_Sheet_Invoices() Dim Ws As Worksheet Set Ws = Worksheets("MyDataSheet") ' Remove all contents Ws.Range("B2:F999").ClearContents ' Mark the "sent" flag for the new sheet to False Worksheets("Data").Range("B6").Value = False End Sub 

Comme vous le remarquerez, j'utilise ActiveWorkbook.SaveCopyAs pour créer une copy, et j'ai une Sous Clear_Sheet_Invoices qui peut effacer toutes datatables requirejses. Comment exécuter ce sous-dossier sur le nouveau file?

J'ai pensé copyr la MyDataSheet dans une nouvelle feuille, effacer la fiche technique, save le nouveau file et copyr la feuille. Lors de l'ouverture d'un file, je vérifie si une copy de la feuille est présente et je supprimerai la feuille. Ouais, horriblement moche, il devrait y avoir un meilleur moyen, n'est-ce pas? 😉

Vous pouvez modifier la définition de Clear_Sheet_Invoices() de telle sorte qu'il requirejs un paramètre du type de Workbook et cela effacera la fiche de travail "MyDataSheet" dans ce classur.

Ensuite, vous pouvez invoquer ce sous et passer le classur nouvellement créé en tant que paramètre.

Voici le code que vous devez modifier pour l'implémenter:

 Sub Clear_Sheet_Invoices(Wb As Workbook) Dim Ws As Worksheet Set Ws = Wb.Worksheets("MyDataSheet") ' Remove all contents Ws.Range("B2:F999").ClearContents ' Mark the "sent" flag for the new sheet to False Wb.Worksheets("Data").Range("B6").Value = False End Sub 

 Sub Create_New_Copy() Dim Wb As Workbook Dim NewWb As Workbook Dim NewFileName As Ssortingng Dim FileExtStr As Ssortingng Dim FilePath As Ssortingng Set Wb = ActiveWorkbook NewFileName = "FileNameHere " & Format(DateAdd("d", 1, Now), "yyyy-mm-dd") FileExtStr = "." & LCase(Right(Wb.Name, Len(Wb.Name) - InStrRev(Wb.Name, ".", , 1))) FilePath = ActiveWorkbook.Path & "\" & NewFileName & FileExtStr ' Save this sheet as the new file Wb.SaveCopyAs FilePath Set NewWb = Excel.Workbooks.Open(FilePath) ' # This is the problem, how to clear only the new file?? Call Clear_Sheet_Invoices(NewWb) Call NewWb.Close(True) End Sub 

La méthode SendData_Click ne nécessite aucune modification.