dim oEmail As Outlook.mailitem
dim textbody as string
textbody = oEmail.body
msgbox textbody
某些传入邮件(国外和国内)内容在Outlook中显示正常,但是当我运行上述宏程序时,消息框(可变文本体)显示文字之间的问号,而不是空格。
举例说明,
Outlook Mail读取:
你好,你好吗?
Msgbox显示:
您好?有?怎么样?好吗?你吗?在做什么?
似乎字符未正确存储在变量中。
以下测试代码对于第一个instr()
导致“0”,而后一个代码部分导致“> 0”。似乎文本正文中的问号阻止正确检测字符串中的连续匹配单词。
if InStr(1, LCase$(textbody), "how are you") > 0 Then
msgbox "found 3 consecutive matching words in string"
end if
if InStr(1, LCase$(textbody), "how") > 0 Then
msgbox "found a word match in string"
end if
答案 0 :(得分:1)
如果没有样本,我无法给出绝对答案,但很可能问号是将Unicode字符(因此大部分是您的外国字符)表示为?
,因为 Unicode无法呈现MsgBox
使用的字体。
例如,包含以下内容的电子邮件:
Smiley Face [☺] Smile in Chinese [微笑]
...将在MsgBox
中呈现为:
Smiley Face [?] Smile in Chinese [??]
如果您尝试使用Debug.Print
在即时窗口中显示它,也会如此。
但是,正确的字符存储在String
中。例如,如果您以编程方式将值放入Excel单元格中,则可能会正确显示:
话虽这么说,我确定Windows / Office的区域版本可以正确显示Unicode字符,否则外国符号永远不会显示在消息框中。
解决方法可能是将默认消息框字体更改为支持Unicode的字体。
这篇文章也可能有所帮助: