将Excel文件保存为不带引号的.txt格式

我有一个excel工作表,里面有A列的数据。单元格中有很多特殊字符。当我以.txt格式保存工作表时,我在每行的开始处得到引号。 我试图手动和通过macros保存在.txt格式的文件。为什么这样? 如何删除它们? 我无法删除 引号。 附上一张照片 在这里输入图像说明

试试这个代码。 这是你想要的。

逻辑

  1. 将该文件保存为用户临时目录中的TAB分隔文件
  2. 阅读1中的文本文件
  3. 用空格replace"" ,并同时写入新文件。

代码(试验和testing)

 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 

快照

实际工作簿

在这里输入图像说明

保存后

在这里输入图像说明

我看到这个问题已经得到解答,但是如果其他人发现这个问题,我想提供一个替代scheme。

根据所需的分隔符,可以在不写任何代码的情况下执行此操作 。 原来的问题没有给出所需的输出types的细节,但这里是一个替代scheme:

PRN文件types

最简单的select是将文件保存为“格式化文本(空格分隔)”types。 VBA代码行看起来类似于:

 ActiveWorkbook.SaveAs FileName:=myFileName, FileFormat:=xlTextPrinter, CreateBackup:=False 

在Excel 2007中,这会令人讨厌地在文件名末尾放置一个.prn文件扩展名,但是可以通过手动重命名将其更改为.txt。

在Excel 2010中,您可以在“另存为”对话框中指定所需的任何文件扩展名。

一个重要的事情要注意:文本文件中使用的分隔符的数量与Excel列的宽度有关。

注意:

Excel截图

变为:

文本截图

呃,这个怎么样?

复制你的单元格。
打开记事本。
糊。

看看没有引号,没有引号,并保留特殊字符, 这是OP所要求的。 它也是用回车来划定的,就像OP没有提到的坏事(或好事)一样。

不太清楚为什么一个简单的答案能带来理想的结果 ,这给我一个负面的印象。

我只是花了一个下午的好一段时间

有两种常见的写入文件的方式,第一种是直接文件访问“写入”语句。 这增加了报价。

第二个是“ActiveWorkbook.SaveAs”或“ActiveWorksheet.SaveAs”,它们都具有改变活动工作簿的文件名的不良副作用。

这里的解决scheme是我在网上find的一些解决scheme的混合体。 它基本上这样做:1)复制选定单元格到一个新的工作表2)迭代遍历每个单元格,并“打印”到打开的文件3)删除临时工作表。

该函数对所选单元格起作用,并为文件名提取string或提示input文件名。

 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 

结束function

我有同样的问题:我必须为Excel文件中的银行支付制作一个特定的.txt文件。 .txt文件不能由任何字符定界,因为标准在每个必填字段之后需要一定数量的逗号。 最简单的方法是复制excel文件的内容并将其粘贴到记事本中。