Vba 将文件保存为csv,保存时默认为txt扩展名

Vba 将文件保存为csv,保存时默认为txt扩展名,vba,outlook,Vba,Outlook,如何将扩展名为csv但实际上是txt文件(这是Cognos问题)的文件保存为真正的csv文件 This file: H:\TEST_DROP\Files\abc.csv (actually Unicode Text) Resaved as: H:\TEST_DROP\Files\abc.csv (save as CSV comma delimited) 目前正在这样做: olMail.Attachments.Item(j).SaveAsFile strFolder &

如何将扩展名为csv但实际上是txt文件(这是Cognos问题)的文件保存为真正的csv文件

This file:     H:\TEST_DROP\Files\abc.csv  (actually Unicode Text)
Resaved as:    H:\TEST_DROP\Files\abc.csv  (save as CSV comma delimited)
目前正在这样做:

olMail.Attachments.Item(j).SaveAsFile strFolder & olMail.Attachments.Item(j).FileName 
按原样复制文件的。需要将其更改为true CSV逗号分隔

如果我手动打开文件并保存文件,则默认扩展名为.txt,即使文件名中显示.csv

即使我们可以使用CSV扩展复制它,它也会在上游造成问题,需要有人将其重新保存为.CSV逗号分隔

我的想法是在记事本中短暂地打开它,并使用csv(逗号分隔)扩展名重新保存它,因为它希望默认为*.txt扩展名

这是问题的根源(但目前没有资源解决)

.FileName
包含文件扩展名;您希望剥离它,为此,可以使用简单的字符串操作功能:

Dim originalName As String
originalName = olMail.Attachments.Item(j).FileName

Dim strippedName As String
stripppedName = Left$(originalName, InStrRev(originalName, ".") - 1)
或者,您可以使用
文件系统对象
(参考
脚本编写
库);
GetBaseName
函数采用路径/文件名,并返回去掉文件扩展名的文件名:

Dim originalName As String
originalName = olMail.Attachments.Item(j).FileName

With New FileSystemObject
    Dim strippedName As String
    strippedName = .GetBaseName(originalName)
End With

Dim renamed As String
renamed = strippedName & ".csv"

CSV是一种文本文件。。。你所说的“它实际上是一个txt文件”到底是什么意思?它是否使用了不同的分隔符(比如tab而不是逗号)?文件扩展名对于我们来说只是一个微不足道的人,能够分辨什么是什么-操作系统使用它们来确定当我们打开它们时启动什么程序-但实际上它都是烟雾和镜子:
.csv
.txt
.dat
.html
.json
,没有任何区别,也不会更改文件内容中的任何内容。。。也就是说,在一天结束的时候,除了文本什么都没有。听起来你需要调整你的Windows资源管理器设置来停止隐藏已知的扩展名(IIRC默认情况下它会隐藏它们)。@bassfader即使它显示扩展名CSV,但有一些东西(由于Cognos下载过程)导致它带有一个*.TXT…我不知道…你会称之为“外表”吗?Cognos问题现在无法解决,因此课程似乎是开放/重新保存的(因为简单的saveas无法解决问题。那么,有人可以共享代码来打开并重新保存csv逗号分隔的文本文件吗?@Mathieu…完全同意。但是上游组件还存在这个小问题。只需要代码剪断就可以打开并保存为csv逗号分隔的文本文件。…@Mathieu…酷,让我来试试。
Dim originalName As String
originalName = olMail.Attachments.Item(j).FileName

With New FileSystemObject
    Dim strippedName As String
    strippedName = .GetBaseName(originalName)
End With

Dim renamed As String
renamed = strippedName & ".csv"