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

ank*_*wal 15 excel vba text excel-vba

我有一个excel表,其中包含A列中的数据.单元格中有许多特殊字符.当我以.txt格式保存工作表时,我在每行的开头都得到了引号.我尝试手动和宏以.txt格式保存文件.为什么会这样?如何删除它们?我无法删除报价. 附上照片在此输入图像描述

nic*_*las 16

我看到这个问题已经得到解答,但是想要提供一个替代方案以防其他人稍后发现.

根据所需的分隔符,可以在不编写任何代码的情况下执行此操作.原始问题没有提供所需输出类型的详细信息,但这里有一个替代方案:

PRN文件类型

最简单的选择是将文件另存为"格式化文本(空格分隔)"类型.VBA代码行看起来类似于:

ActiveWorkbook.SaveAs FileName:=myFileName, FileFormat:=xlTextPrinter, CreateBackup:=False
Run Code Online (Sandbox Code Playgroud)

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

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

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

注意:

Excel截图

变为:

文字截图

  • 工作但如果您的单元格跨度超过打印输出的宽度,它们将被移动到页面底部并中断您的数据. (2认同)

Sid*_*out 9

试试这个代码.这样做你想要的.

逻辑

  1. 将文件另存为用户临时目录中的TAB分隔文件
  2. 在1 go中读取文本文件
  3. 替换""为空格并同时写入新文件.

代码(经过试验和测试)

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
Run Code Online (Sandbox Code Playgroud)

快照

实际工作簿

在此输入图像描述

保存后

在此输入图像描述


Eri*_*oss 6

嗯,这个怎么样.

复制你的细胞.
打开记事本.
糊.

看看没有引号,没有引号,并保留特殊字符,这是OP要求的.它也由回车描述,与附加的图形相同,OP没有提到它是一件坏事(或好事).

不确定为什么一个简单的答案会产生预期的结果,会让我产生负面影响.

  • 这对我不起作用。它仍然在记事本中引用。 (3认同)
  • 建议非手动解决方案会更好.手动解决方案成本高昂,而不是真正的解 (2认同)