Outlook VBA: кодировка файлов, сохраненых через макрос
Формулировка задачи:
Здравствуйте уважаемые,
В VBA относительно новичок. Работаю над макросом, сохраняющем письма с вложениями на жесткий диск. Письма сохраняются в таком порядке:
- Вложения;
- письмо в формате .txt
- письмо в формате .msg
Решение задачи: «Outlook VBA: кодировка файлов, сохраненых через макрос»
textual
Листинг программы
Sub SaveFolderToHDD(myItem As Outlook.MailItem)
...
Const sPATH0 As String = "C:\Temp\Outlook_Items"
Const OLTXT = 0
...
miItem.SaveAs sPath_i & "RawData#" & ".msg" ', olMSG
miItem.SaveAs sPath_i & "SvMsg#" & ".txt", OLTXT
Call ChangeFileCharset(sPath_i & "SvMsg#" & ".txt", "UTF-8", "ANSI")
...
End Sub
Function ChangeFileCharset(ByVal namef$, ByVal DestCharset$, _
Optional ByVal SourceCharset$) As Boolean
On Error Resume Next: Err.Clear
With CreateObject("ADODB.Stream")
.Type = 2
If Len(SourceCharset$) Then .Charset = SourceCharset$ ' указываем исходную кодировку
.Open
.LoadFromFile namef$ ' загружаем данные из файла
FileContent$ = .ReadText ' считываем текст файла в переменную FileContent$
.Close
.Charset = DestCharset$ ' назначаем новую кодировку
.Open
.WriteText FileContent$
.SaveToFile namef$, 2 ' сохраняем файл уже в новой кодировке
.Close
End With
ChangeFileCharset = Err = 0
End Function