2017-10-16 4 views
0

Je sais qu'il y a des questions similaires (et des réponses) sur Stack Overflow mais j'essaie spécifiquement d'inviter l'utilisateur final à enregistrer le fichier et à le renommer comme il se doit, sans créer le fichier automatiquement.Comment enregistrer un fichier Excel au format CSV en utilisant VBA, ce qui signifie que le nouveau fichier ne me donnera pas de message d'erreur?

J'essaie de créer une macro qui exportera automatiquement une feuille de calcul dans mon classeur et enregistrera le fichier pour les utilisateurs non techniques, en tant que fichier CSV. La macro fonctionne réellement bien, mais chaque fichier qu'elle crée me donne le message d'erreur "Le format de fichier et l'extension de" NAME OF FILE.csv "ne correspondent pas.Le fichier peut être corrompu ou dangereux.Si vous ne croyez pas sa source, don Ne l'ouvre pas, veux-tu l'ouvrir quand même? Comment puis-je ouvrir ce nouveau fichier sans ce message d'avertissement? Voici mon code:

Sub copy_translated_file() 

Dim DstFile As String 'Destination File Name 
Dim wb As Workbook 
Dim InitFile As String 

InitFile = "BE SURE TO CHANGE THE NAME OF THIS FILE TO WHAT YOU WANT.csv" 
    Sheets("Translated").Select 
    Sheets("Translated").Copy 

    Cells.Select 
    Selection.Copy 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 

    Application.CutCopyMode = False 

Set wb = ActiveWorkbook 

ActiveSheet.Buttons.Delete 'Get rid of the macro button 

    Columns("N:N").Select 
    Range(Selection, Selection.End(xlToRight)).Select 
    Selection.Delete Shift:=xlToLeft 
    Range("F1").Select 

DstFile = Application.GetSaveAsFilename(InitialFileName:=InitFile, _ 
             fileFilter:="CSV (*.csv), *.csv", _ 
             FilterIndex:=1, _ 
             Title:="Save As") 
     If DstFile = "False" Then 
      MsgBox "Actions Canceled. File not saved." 
      wb.Close savechanges:=False 'Close File 
      Exit Sub 
     Else 
     wb.SaveAs DstFile 'Save file 
     wb.Close False 'Close file 
     MsgBox ("Translated file successfully saved in specified location.") 
     End If 

End Sub 
+1

On dirait que vous êtes enregistrez-vous en format Excel normal, mais avec une extension CSV? Voir ici: https://msdn.microsoft.com/fr-fr/vba/excel-vba/articles/workbook-saveas-method-excel Vous devez fournir l'argument 'FileFormat' correct. –

Répondre

0

C'est un paramètre dans Excel lui-même, allez dans Fichier -> Options -> Trust Center

Aussi, assurez-vous de votre drapeau est réglé pour FileFormat:=xlCSV

+0

Merci pour le pourboire! En fait, j'ai essayé d'ajouter un drapeau FileFormat mais obtenir une autre erreur: « Erreur de compilation: Argument nommé pas trouvé » quand je le fais lors de la modification du GetSaveAsFilename à: DstFile = Application.GetSaveAsFilename (InitialFileName: = InitFile, _ Filefilter: = "CSV (* .csv), * .csv", _ FileFormat: = xlCSV, _ FilterIndex: = 1, _ Titre: = "Enregistrer sous") – S55

+0

'FileFormat' est un argument' SaveAs', pas 'GetSaveAsFilename' –

+0

@TimWilliams J'ai totalement raté ça, bonne prise! Puis-je vous demander pourquoi vous utilisez GetSaveAs? Il semble que vous essayez d'enregistrer le fichier pas ** obtenir ** le nom du fichier de sauvegarde – Maldred