Enregistrez sous .CSV et .txt

Je suis sûr que c'est simple, mais cela me déconcerte au-delà de la croyance. J'ai écrit le code ci-dessous. Vous pouvez voir dans les endroits où je sauvegarde My final de paiement et Non-mypay Final en tant que files CSV. Existe-t-il un moyen pour que les files puissent être enregistrés en tant que files txt? Idéalement, avec le même location si possible? Comme toujours, votre aide est grandement appréciée.

Option Explicit Sub BACSConversion() Dim MyNewBook As Ssortingng Dim MySaveFile As Ssortingng Dim fileToOpen As Variant Dim fileName As Ssortingng Dim sheetName As Ssortingng Dim rCopy As Range 'Turn off display alerts Application.DisplayAlerts = False 'Turn off screen updates Application.ScreenUpdating = False 'Ensures that the file open directory is always the same ChDir "S:\MERIT OUTPUTS FOLDER\MSI Recruitment Limited\" 'Opens the folder to location to select txt file fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt") If fileToOpen <> False Then Workbooks.OpenText fileName:=fileToOpen, _ DataType:=xlDelimited, Tab:=True End If 'Creates the file name based on txt file name fileName = Mid(fileToOpen, InStrRev(fileToOpen, "\") + 1) 'Creates the sheet name based on the active txt file sheetName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) 'Save active file as... ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment Limited\BACS File Original\" & _ fileName & ".CSV") 'Selects all data in column A and copys to clipboard Set rCopy = Range("A1", Range("A1").End(xlDown)) 'Open the original document where the BACS file is located Workbooks.Open "S:\Accounts (New)\Management Information (Analysis)\Phil Hanmore - Analysis\bacs conversation calc.xlsx" 'Selects the worksheet called "Original" Sheets("Original").Range("A:A").ClearContents 'Paste selected values from previous sheet rCopy.Copy Sheets("Original").Range("A1").PasteSpecial Paste:=xlPasteValues 'Selects appropriate worksheet - Non-MyPayFINAL Sheets("Non-MyPay FINAL").Select 'Selects all data in column A and copys to clipboard Range("A1", Range("A1").End(xlDown)).Select Selection.Copy 'Add a new workbook Workbooks.Add 'Paste selected values from previous sheet Selection.PasteSpecial Paste:=xlPasteValues 'Build SaveAs file name MySaveFile = Format(Now(), "DDMMYYYY") & "NonMyPayFINAL" & ".CSV" 'Save template file as... ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment Limited\" & MySaveFile) 'Close the new saved file ActiveWorkbook.Close 'Selects appropriate worksheet - MyPayFINAL Sheets("MyPay FINAL").Select 'Selects all data in column A and copys to clipboard Range("A1", Range("A1").End(xlDown)).Select Selection.Copy 'Add a new workbook Workbooks.Add 'Paste selected values from previous sheet Selection.PasteSpecial Paste:=xlPasteValues 'Build SaveAs file name MySaveFile = Format(Now(), "DDMMYYYY") & "MyPayFINAL" & ".CSV" 'Save template file as... ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment Limited\" & MySaveFile) 'Close the new saved file ActiveWorkbook.Close 'Close original source workbook (template) Workbooks("bacs conversation calc").Close 'Turn on display alerts Application.DisplayAlerts = True 'Turn on screen updates Application.ScreenUpdating = True End Sub 

Après que vous l'enregistrez en tant que file .csv , re-faites simplement le même code, mais au lieu de .csv changez-le vers .txt

Mais cela ne changera pas nécessairement le type de file. Après votre command Activeworkbook.SaveAs , ajoutez FileFormat:= xlTextWindows . Cela l'savea en tant que file text.

Il devrait ressembler à:

ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment Limited\" & MySaveFile), FileFormat:= xlTextWindows

Je reorderais également de searchr les différents types de "FileFormats" quand il s'agit de sauvegarder des classurs, simplement pour vous familiariser avec eux. Il suffit de searchr Excel FileFormats, et vous devriez pouvoir find des informations sur tous.

Mettre à jour:

Comme mentionné dans les commentaires, votre file CSV que vous sauvegardez peut ne pas sauvegarder en tant que délimité par des virgules. Pour ce faire, de manière similaire à ce que j'ai dit plus haut, vous pouvez modifier le format de file de votre sauvegarde initiale sur xlCSV . Cela peut être obtenu en ajoutant FileFormat:= xlcsv à la fin de votre premier ActiveWorkbook.SaveAs

FileFormats sont nécessaires lorsque vous êtes réellement intéressé à modifier le type de file et pas seulement l'extension. Voici le lien vers le site MSDN expliquant tous les différents formats. MSDN XLFileFormats . Au lieu d'utiliser le text xlCSV ou xlTextWindows vous pouvez également utiliser les valeurs numériques atsortingbuées à ces formats. Au lieu de FileFormat:= xlCSV vous pouvez faire FileFormat:= 6 ou pour xlTextWindows vous pouvez faire FileFormat:= 20