Vba 将文件保存为csv,保存时默认为txt扩展名
如何将扩展名为csv但实际上是txt文件(这是Cognos问题)的文件保存为真正的csv文件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 &
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"