Je sais qu’il existe de nombreuses entrées telles que enregistrer des feuilles Excel individuelles au format csv Et exporter chaque feuille dans un fichier CSV séparé - Mais je souhaite enregistrer une feuille de calcul unique dans un classeur .
Mon code dans mon fichier xlsm a un params et une fiche technique. Je crée une copie des données avec les valeurs collées dans la feuille de travail, puis je veux l'enregistrer au format csv. Actuellement, tout mon classeur change de nom et devient un csv.
Comment "enregistrer en tant que csv" une seule feuille dans un classeur Excel?
Existe-t-il un Worksheet.SaveAs
ou dois-je déplacer ma feuille de données dans un autre classeur et l'enregistrer de cette manière?
Échantillon de code
' [Sample so some DIMs and parameters passed in left out]
Dim s1 as Worksheet
Dim s2 as Worksheet
Set s1 = ThisWorkbook.Sheets(strSourceSheet)
' copy across
s1.Range(s1.Cells(1, 1), s1.Cells(lastrow, lastcol)).Copy
' Create new empty worksheet for holding values
Set s2 = Worksheets.Add
s2.Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
' save sheet
s2.Activate
strFullname = strPath & strFilename
' >>> BIT THAT NEEDS FIXIN'
s2.SaveAs Filename:=strFullname, _
FileFormat:=xlCSV, CreateBackup:=True
' Can I do Worksheets.SaveAs?
Utilisation de Windows 10 et Office 365
Ce code fonctionne bien pour moi.
Sub test()
Application.DisplayAlerts = False
ThisWorkbook.Sheets(strSourceSheet).Copy
ActiveWorkbook.SaveAs Filename:=strFullname, FileFormat:=xlCSV, CreateBackup:=True
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub
Il crée une copie de l'intégralité de la feuille strSourceSheet, qui ouvre un nouveau classeur que nous pouvons ensuite enregistrer en tant que fichier .csv, puis ferme le fichier .csv récemment enregistré, sans modifier le nom du fichier d'origine.
Vous devez simplement enregistrer le classeur au format CSV . Excel affichera une boîte de dialogue vous avertissant que vous enregistrez sur une seule feuille, mais vous pouvez supprimer cet avertissement avec Application.DisplayAlerts = False.
N'oubliez pas de le remettre à la vérité si.
C'est assez générique
Sub WriteCSVs()
Dim mySheet As Worksheet
Dim myPath As String
'Application.DisplayAlerts = False
For Each mySheet In ActiveWorkbook.Worksheets
myPath = "\\myserver\myfolder\"
ActiveWorkbook.Sheets(mySheet.Index).Copy
ActiveWorkbook.SaveAs Filename:=myPath & mySheet.Name, FileFormat:=xlCSV, CreateBackup:=True
ActiveWorkbook.Close
Next mySheet
'Application.DisplayAlerts = True
End Sub