J'ai une feuille Excel qui contient des données dans la colonne A.Il y a beaucoup de caractères spéciaux dans les cellules. Lorsque je sauvegarde la feuille au format .txt, des guillemets sont placés au début de chaque ligne. J'ai essayé les deux manuellement et par macro en enregistrant le fichier au format .txt.Pourquoi est-ce vrai? Comment les supprimer? Je ne suis pas en mesure de supprimer les citations. Fixation d'une photo
Essayez ce code. Cela fait ce que tu veux.
LOGIQUE
""
par des blancs et écrivez dans le nouveau fichier en même temps.CODE (ESSAYÉ ET TESTÉ)
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Const MAX_PATH As Long = 260
'~~> Change this where and how you want to save the file
Const FlName = "C:\Users\Siddharth Rout\Desktop\MyWorkbook.txt"
Sub Sample()
Dim tmpFile As String
Dim MyData As String, strData() As String
Dim entireline As String
Dim filesize As Integer
'~~> Create a Temp File
tmpFile = TempPath & Format(Now, "ddmmyyyyhhmmss") & ".txt"
ActiveWorkbook.SaveAs Filename:=tmpFile _
, FileFormat:=xlText, CreateBackup:=False
'~~> Read the entire file in 1 Go!
Open tmpFile For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
Close #1
strData() = Split(MyData, vbCrLf)
'~~> Get a free file handle
filesize = FreeFile()
'~~> Open your file
Open FlName For Output As #filesize
For i = LBound(strData) To UBound(strData)
entireline = Replace(strData(i), """", "")
'~~> Export Text
Print #filesize, entireline
Next i
Close #filesize
MsgBox "Done"
End Sub
Function TempPath() As String
TempPath = String$(MAX_PATH, Chr$(0))
GetTempPath MAX_PATH, TempPath
TempPath = Replace(TempPath, Chr$(0), "")
End Function
INSTANTANÉS
Cahier de travail réel
Après la sauvegarde
Je vois que cette question a déjà reçu une réponse, mais je voulais offrir une alternative au cas où quelqu'un d'autre le trouverait plus tard.
En fonction du délimiteur requis, il est possible de le faire sans écrire de code . La question initiale ne donne pas de détails sur le type de sortie souhaité, mais voici une alternative:
L'option la plus simple consiste à enregistrer le fichier sous le type "Texte mis en forme (espace délimité)" . La ligne de code VBA ressemblerait à ceci:
ActiveWorkbook.SaveAs FileName:=myFileName, FileFormat:=xlTextPrinter, CreateBackup:=False
Dans Excel 2007, une extension de fichier .prn sera insérée à la fin du nom de fichier, mais elle peut être remplacée par .txt en renommant manuellement.
Dans Excel 2010, vous pouvez spécifier toute extension de fichier souhaitée dans la boîte de dialogue Enregistrer sous.
Une chose importante à noter: le nombre de délimiteurs utilisés dans le fichier texte est lié à la largeur de la colonne Excel.
Observer:
Devient:
Ummm, pourquoi pas ça?.
Copiez vos cellules.
Ouvrez le Bloc-notes.
Coller.
Ne regardez pas les guillemets, les guillemets, et conserve les caractères spéciaux, comme demandé par le PO. Il est également délimité par un retour chariot, comme dans l’illustration ci-jointe que le PO n’a pas mentionnée comme une mauvaise chose (ou une bonne chose).
Pas vraiment sûr pourquoi une réponse simple, qui donne les résultats souhaités, me donne une note négative.
Je viens de passer la majeure partie de l'après-midi sur ce
Il existe deux façons courantes d'écrire dans un fichier, la première étant une instruction "écriture" d'accès direct au fichier. Cela ajoute les citations.
Le second est "ActiveWorkbook.SaveAs" ou "ActiveWorksheet.SaveAs", qui ont tous deux le très mauvais effet secondaire de changer le nom du fichier du classeur actif.
La solution ici est un hybride de quelques solutions trouvées en ligne. Il effectue essentiellement ceci: 1) Copiez les cellules sélectionnées dans une nouvelle feuille de calcul 2) Parcourez chaque cellule une à la fois et "imprimez-le" dans le fichier ouvert 3) Supprimez la feuille de calcul temporaire.
La fonction fonctionne sur les cellules sélectionnées et prend une chaîne pour un nom de fichier ou une invite pour un nom de fichier.
Function SaveFile(myFolder As String) As String
tempSheetName = "fileWrite_temp"
SaveFile = "False"
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
Set myRange = Selection
'myRange.Select
Selection.Copy
'Ask user for folder to save text file to.
If myFolder = "Prompt" Then
myFolder = Application.GetSaveAsFilename(fileFilter:="XML Files (*.xml), *.xml, All Files (*), *")
End If
If myFolder = "False" Then
End
End If
Open myFolder For Output As #2
'This temporarily adds a sheet named "Test."
Sheets.Add.Name = tempSheetName
Sheets(tempSheetName).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For i = 1 To LastRow
For j = 1 To LastCol
CellData = CellData + Trim(ActiveCell(i, j).Value) + " "
Next j
Print #2, CellData; " "
CellData = ""
Next i
Close #2
'Remove temporary sheet.
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
'Indicate save action.
MsgBox "Text File Saved to: " & vbNewLine & myFolder
SaveFile = myFolder
Fonction de fin
J'ai le même problème: je dois créer un fichier .txt spécifique pour les paiements bancaires à partir d'un fichier Excel. Le fichier .txt ne doit être supprimé d'aucun caractère, car la norme requiert un certain nombre de virgules après chaque champ obligatoire ..__ La méthode la plus simple consiste à copier le contenu du fichier Excel et à le coller dans le bloc-notes.
La solution PRN ne fonctionne que pour des données simples dans les cellules. Pour moi, elle ne coupe que les 6 premiers signes de la cellule de 200 caractères.
Ce sont les principaux formats de fichier dans Excel 2007-2016, Remarque: Dans Excel pour Mac, les valeurs sont +1.
51 = xlOpenXMLWorkbook (without macro's in 2007-2016, xlsx)
52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2016, xlsm)
50 = xlExcel12 (Excel Binary Workbook in 2007-2016 with or without macro's, xlsb)
56 = xlExcel8 (97-2003 format in Excel 2007-2016, xls)
From XlFileFormat, propriété FileFormat
Gardez à l'esprit les autres FileFormatNumbers pour la méthode SaveAs :
FileExtStr = ".csv": FileFormatNum = 6
FileExtStr = ".txt": FileFormatNum = -4158
FileExtStr = ".prn": FileFormatNum = 36
La réponse de cette question a fourni la réponse à cette question beaucoup plus simplement.
Write est une instruction spéciale conçue pour générer une lecture par machine les fichiers qui sont ensuite consommés avec Input.
Utilisez Imprimer pour éviter de manipuler les données.
Merci utilisateur GSerg