在VBA中从电子邮件签名中删除

时间:2018-08-31 17:36:37

标签: excel vba excel-vba

我制作了一个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

1 个答案:

答案 0 :(得分:1)

FSO无法读取UTF-8

  

From the documentation

     
    

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

  
     

由于您有奇怪的字符,所以我认为这有些不正确,并且已在某些8位Windows代码页中读取了该文件,因为如果它实际上只能读取ASCII,您将看到df <- data.frame( id = c(1:5, 6, 5), year = c(2011, 2011, 2010, 2010, 2009, 2010, 2009), uid = c(12, 12, 11, 12, 10, 11, 10), words = c("abc,cde", "efgh,cde", "bdfc,cde,pqrs", "abcd,cadde", "abc,cdefgh,lmx,abcd,ijklm,pqrs","bdfc,acca,ijklm", "efgh"), stringsAsFactors = FALSE ) aggregate(df["words"], df[,c("year", "uid")], function(x) paste0(unique(unlist(strsplit(x, ","))), collapse=","))

     

无论如何,如果可以使用ADO,则可以执行以下操作:

????
     

Source


Outlook签名