我有一封带有图像附件的电子邮件,我想将其与 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 回答
由于 Windows 的MS-DOS“ 8.3”文件命名旧版,我最终遇到了一种解决方法。将文件名转换为其“短文件名”会使
Dir()
和Open()
满意:现在
fso.FileExists(sFileShortName)
和bFileExists
(基于Dir()
)返回True
和Open sFileShortName For Binary Access Read As lFileNum
也可以工作。我希望这对其他人有好处。