首页 文章

带有重音文件名的 Outlook Attachment.SaveAsFile 导致找不到文件

提问于
浏览
0

我有一封带有图像附件的电子邮件,我想将其与 VBA 宏一起保存。文件名和显示名称在附件名称(e.g. “Événement.jpg”)中显示法语口音。

使用 Outlook VBA 保存附件的工作原理是:

Dim fso As Object
Dim sFileName As String
Dim oAttachment As Outlook.attachment

set fso = CreateObject("Scripting.FileSystemObject")
' Edit the folder location accordingly:
sFileName = "C:\Users\YOUR_ACCOUNT_HERE\Desktop\" & oAttachment.getFileName
oAttachment.SaveAsFile sFileName

我可以看到在文件系统上正确命名的文件。

稍后尝试在 VBA 中访问此文件失败。以下代码始终返回 FALSE:

' Returns False
MsgBox "File [" & sFileName & "] exists? " & sfo.fileexists(sFileName), vbInformation
Dim bFileExists as Boolean
If lenB (Dir(sFileName)  > 0 Then
    bFileExists = True
Else
    bFileExists = True
EndIf
' Also returns False
MsgBox "File [" & sFileName & "] exists? " & bFileExists, vbInformation

我究竟做错了什么?

1 回答

  • 0

    由于 Windows 的MS-DOS“ 8.3”文件命名旧版,我最终遇到了一种解决方法。将文件名转换为其“短文件名”会使Dir()Open()满意:

    Dim sFileShortName As String
    sFileShortName = fso.Getfile(sTempFileLocation).shortpath
    bFileExists = (Dir(sFileShortName) <> "")       ' Now returns True at last!
    

    现在fso.FileExists(sFileShortName)bFileExists(基于Dir())返回TrueOpen sFileShortName For Binary Access Read As lFileNum也可以工作。

    我希望这对其他人有好处。

相关问题