/ / Pour enregistrer une seule feuille de calcul dans Excel dans le dossier source avec le nom souhaité - excel, excel-vba, vba

Pour enregistrer une seule feuille de calcul dans Excel dans un dossier source portant le nom souhaité - excel, excel-vba, vba

J'ai un classeur activé par macro dans mon localdossier. Ce classeur se compose de 7 feuilles de calcul au total. Dernière feuille nommée "AnsSheet". Je souhaite enregistrer la dernière feuille (AnsSheet uniquement) dans le même emplacement de dossier avec un nom modifié. Voici le code que j'utilise qui ne donne pas le résultat souhaité.

Pourriez-vous s'il vous plaît guider?

Sheets("AnsSheet").Select
Set wb = Workbooks.Add
ThisWorkbook.Sheets("AnsSheet").Copy Before:=wb.Sheets(1)
ActiveSheet.SaveAs Filename:=ActiveWorkbook.Path & "WF_Macro_" & Format(Date, "DD-MMM-YYYY") & ".xls"

Réponses:

1 pour la réponse № 1

Votre nom de fichier sera incomplet car ActiveWorkbook.Path sera vide. L'ActiveWorkbook sera votre nouveau classeur, et comme vous ne l'avez pas encore enregistré, le Path sera vide. Utilisation ThisWorkbook à la place pour obtenir le chemin du classeur en cours.

Je ne suis pas sûr que le ActiveSheet.SaveAs fonctionnera mais je ne l’ai pas examinée. Personnellement, j’utiliserais le Workbook.SaveAs pour enregistrer le nouveau classeur. De plus, au lieu d'ajouter ".xls" à la fin du nom de fichier, vous devez spécifier le type de fichier à l'aide du paramètre FileFormat Énumération MSDN FileFormat

J'ai mis à jour votre code ci-dessous avec des commentaires pour vous aider à voir ce qui se passe:

Dim wb As Excel.Workbook

"\ Create a new Workbook with only one Worksheet
Set wb = Workbooks.Add(xlWBATWorksheet)

"\ Copy Sheet to start of new Workbook
ThisWorkbook.Sheets("AnsSheet").Copy Before:=wb.Sheets(1)

"\ Turn off alerts and delete the unused sheet, turn alerts back on
Application.DisplayAlerts = False
wb.Sheets(2).Delete
Application.DisplayAlerts = True

"\ Save new Workbook as a standard Workbook
wb.SaveAs Filename:=ThisWorkbook.Path & "WF_Macro_" & Format(Date, "DD-MMM-YYYY"), _
FileFormat:=xlWorkbookNormal