保存文件,保存时默认为txt扩展名,格式为csv

时间:2019-10-04 13:58:53

标签: 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 & olMail.Attachments.Item(j).FileName 

将按原样复制文件。需要将其更改为真正的CSV逗号分隔。

如果我手动打开文件并保存文件,即使文件名中出现.csv,它的默认扩展名为.txt。

即使我们可以使用CSV扩展名将其复制过来,它也会导致上游出现问题,需要有人将其重新保存为.csv逗号分隔。

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

这是引发问题的问题(但是目前没有资源可解决)https://www.ibm.com/support/pages/how-modify-csv-file-format-cognos

1 个答案:

答案 0 :(得分:0)

olMail.Attachments.Item(j).SaveAsFile strFolder & olMail.Attachments.Item(j).FileName 

.FileName包含文件扩展名;您想要剥离它,并执行此操作,可以使用简单的字符串操作功能:

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

Dim strippedName As String
stripppedName = Left$(originalName, InStrRev(originalName, ".") - 1)

或者,您可以使用FileSystemObject(引用Scripting库); 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"