从VBA中的电子邮件签名中删除[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我根据用户数据制作了一个excel宏来一次发送多封电子邮件。我将.body更改为.htmlbody以允许使用粗体等;但是,当我拨打电子邮件签名时,它会在电子邮件中的实际签名之前放置我发现这是由于UTF-BOM编码,但是,在这种情况下,我无法简单地更新文件的编码。我需要脚本实际使用更新的(UTF-8)编码打开文件,但根本不改变文件。到目前为止,这是我的代码。我离开了大部分代码,因为我相信唯一的更新将在“GetBoiler”功能上完成。

Dim SigString As String
Dim Signature As String


SigString = Environ("appdata") & _
    "\Microsoft\Signatures\Default English - Main.htm"

If Dir(SigString) <> "" Then
    Signature = GetBoiler(SigString)
Else
    Signature = ""
End If

Function GetBoiler(ByVal sFile As String) As String
    Dim fso As Object
    Dim ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
    GetBoiler = ts.readall
    ts.Close
End Function
excel vba excel-vba
1个回答
1
投票

FSO无法阅读UTF-8

From the documentation

FSO只能读取ASCII文本文件。您不能使用FSO读取Unicode文件或读取二进制文件格式,如Microsoft Word或Microsoft Excel。

既然你有奇怪的字符,我想这有点不正确,文件是在一些8位的Windows代码页中读取的,因为如果它真的只能读取ASCII,你会看到????

无论如何,如果你可以使用ADO,你可以这样做:

Dim objStream, strData

Set objStream = CreateObject("ADODB.Stream")

objStream.CharSet = "utf-8"
objStream.Open
objStream.LoadFromFile("C:\Users\admin\Desktop\ArtistCG\folder.txt")

strData = objStream.ReadText()

objStream.Close
Set objStream = Nothing

(Qazxswpoi)


Outlook签名

  • でるBいくく:x zxswい
  • Stack Overflow:Source
© www.soinside.com 2019 - 2024. All rights reserved.