0

VBA の RangetoHTML 関数を使用して、Excel セルを電子メールに挿入する方法に関する記事を見つけました。それは魅力のように機能しますが、今私は問題に直面しています。

セルにウムラウト (例: ü、ä、ö) がある場合、電子メールの結果に奇妙な記号 (例: ã、…) が表示されます。

書かれた temp.htm ファイルを調べました。このファイルを最初に表示すると、ウムラウトが正しく記述されているように見えますが、16 進エディタでファイルを調べたところ、記述された記号が正しくないことがわかりました。ファイルを書き込む関数は次のとおりです: PublishObjects.Add

だから、誰かがこれで私を助けてくれることを願っています。

編集: testfileを追加しました。ワードとオフィスが必要です。テーブルを選択し、プロシージャ SendMail を実行します。

4

1 に答える 1

1

vba や外部文字、Web では常に問題が発生します。

編集:

セルの値を html から分離できないため、残念ながら以下の関数はこの状況では機能しません。しかし:

ドキュメントのコピーを西ヨーロッパの Windows エンコーディングで保存すると機能します。(以下のコメントを参照)。

これを行うには、[名前を付けて保存] を押します。保存ボタン (ツール) の左側にドロップダウンがあり、エンコードを変更できるダイアログが表示されます。 エンコーディングの変更 画像はテクネットから持ち出され、常にウェブを保存しています..必要はありません。

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 に答える