我制作了一个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
答案 0 :(得分:1)
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)