0

我找到了有关使用 VBA 中的 RangetoHTML 函数将 excel 单元格放入电子邮件的文章。它就像一个魅力,但现在我面临一个问题。

如果单元格中有元音变音(例如:ü、ä、ö),电子邮件中的结果会显示奇怪的符号(例如:ä、...)。

我查了写的 temp.htm 文件。在此文件的第一个视图中,似乎正确书写了元音符号,但在使用十六进制编辑器查看文件后,我发现书写的符号不正确。写入文件的函数是:PublishObjects.Add

所以我希望有人可以帮助我解决这个问题。

编辑:添加了一个testfile。需要 Word 和 Office。选择表并运行过程 SendMail。

4

1 回答 1

1

你总是会遇到 vba 和外来字符和网络的问题。

编辑:

因为您无法将单元格值与 html 分开,所以很遗憾,下面的函数在这种情况下不起作用。但:

如果您使用西欧 windows 编码保存文档的副本,它将起作用。(见下面的评论)。

为此,您可以按“另存为”,然后在保存按钮(工具)的左侧有一个下拉菜单,它将为您提供一个对话框,您可以在其中更改编码。 更改编码 该图像已从 technet 提取并始终保存网络.. 没有必要。

EOF 编辑:

这是我用过的函数,不幸的是不记得我从谁那里得到的,但它来自 vba 和经典 asp 的旧时代 将您的电子邮件单元格公式放入此函数中,它应该可以工作,因为所有字母都是 html 编码的。它的速度很慢,而且开销很大。但它会起作用。

Function HtmlEncode(ByVal inText As String) As String
    Dim i As Integer
    Dim sEnc As Integer
    Dim repl As String

    HtmlEncode = inText

    For i = Len(HtmlEncode) To 1 Step -1
        sEnc = Asc(Mid$(HtmlEncode, i, 1))
        Select Case sEnc
            Case 32
                repl = " "
            Case 34
                repl = """
            Case 38
                repl = "&"
            Case 60
                repl = "<"
            Case 62
                repl = ">"
            Case 32 To 127
               'Numbers
            Case Else
                repl = "&#" & CStr(sEnc) & ";" 'Encode it all
        End Select
        If Len(repl) Then
            HtmlEncode = Left$(HtmlEncode, i - 1) & repl & Mid$(HtmlEncode, i + 1)
            repl = ""
        End If
    Next
End Function
于 2013-10-01T11:35:31.713 回答