Excel VBA 另存为制表符分隔文件

7
我有一些代码可以将活动工作表保存为制表符分隔的文本文件,但是那些包含逗号字符的单元格数据会被导出时加上引号,例如:
John Hopkins, Burgers
becomes
"John Hopkins, Burgers"

我该如何解决这个问题?

这是我的代码:

ActiveWorkbook.SaveAs ActiveWorkbook.path & "\" & filename,
FileFormat:=xlText, CreateBackup:=False

添加如下内容: 我刚刚发现,如果我再次保存文件,它会删除所有的 ""。 我能在代码中再添加一个保存吗?


1
检查这个:https://dev59.com/A2gu5IYBdhLWcg3wMkbF - Vityata
如何在Excel中查找和替换文本文件? - Heresh
5个回答

3

我解决了!由于当您手动保存为分隔文件时,引号会消失,但使用某些编程语言或工具导出的文件中引号不会消失。

ActiveWorkbook.SaveAs ActiveWorkbook.path & "\" & filename,
FileFormat:=xlText, CreateBackup:=False

在上一次保存的基础上,我又增加了一个新的保存方式,但这次使用了按键输入来模拟手动操作。

ActiveWorkbook.SaveAs fil, FileFormat:= _ xlText

SendKeys "^{F4}"
SendKeys "{ENTER}"
SendKeys "{ENTER}"

如果对于任何人来说,不失去原始工作簿的格式或其他功能很重要,您也可以使用VBA创建一个新的工作簿,复制相关的工作表,然后导出该工作簿并在不保存的情况下关闭它 - 从而为您提供导出的文本文件,同时保留您的原始工作簿。当我有一个带有宏和多个工作表用于填充我想要的CSV工作表的工作簿时,我会这样做。我导出那个工作表,但保留我的工作文件不变。 - nollaf126

1
根据FileFormat属性,您可以选择以下格式:
xlCSV
xlCSVMac
xlCSVMSDOS
xlCSVWindows

为什么不选择逗号分隔值格式之一呢?请尝试使用xlCSV

我尝试了所有的方法,但没有一个能够产生我想要的结果。 - Heresh
能否读取该文本文件并进行简单的搜索和替换,以删除所有“,”标记? - Heresh
它仍然产生“” - Heresh
请分享带有样本数据和您编写的代码的文件? - Aditya Pansare
是的,我们可以替换双引号(")。 - Aditya Pansare

0

这是我用来保存普通xlsb文件或xls*文件的某些代码的变体,虽然可以用于许多不同的文件。

Sub SaveAsTDV()

'
' Easy way to export to Tab Deliminated Values
' By DeLaguna
' v17.05.10.15.06
'

Dim BaseFolder As String
    Dim LitProg As String
    Dim Path As String
    Dim Extn As String
      BaseFolder = "YourBase Folder\"    
      FileName = "FileName" 'File name with no Extension.
      Extn = ".txt" 'If choosing somthing other than xlText you may change this.

 Application.DisplayAlerts = False 'Auto Yes to save

    ChDir BaseFolder
        ActiveWorkbook.SaveAs Filename:= BaseFolder & FileName & Extn, _
        FileFormat:=xlText, CreateBackup:=True  'xlText will save as Tab Deliminated text

Application.DisplayAlerts = True ' Reverts to Excel Default showing popup messages for input.

End Sub

希望能对某些人有所帮助,如果我犯了任何错误,请告诉我。我必须删除其中的敏感信息。


0
我之前也在尝试解决这个问题,发现xlText不是一个有效的FileFormat,而xlTextWindows是有效的。可能与版本有关,但为了以防万一,希望能帮到其他遇到同样问题的人。
ActiveWorkbook.SaveAs ActiveWorkbook.path & "\" & filename,FileFormat:=xlTextWindows, reateBackup:=False

FileFormat 的有效输入完整列表存放在这里

https://learn.microsoft.com/en-us/office/vba/api/excel.xlfileformat


0

将文件格式从xlText更改为xlTextPrinter

 ActiveWorkbook.SaveAs ActiveWorkbook.path & "\" & filename,
    FileFormat:=xlTextPrinter, CreateBackup:=False

只考虑公式中的字符串会造成真正的混乱。 - flywire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接