Я создал макрос в Excel 365, используя VBA. Его функция состоит в том, чтобы просмотреть некоторые электронные письма, хранящиеся в Outlook 365, и сохранить каждое из них в файле .msg и файле .html.
Пока что все работает нормально, за исключением того, что html-файлы генерируются с недопустимыми символами.
Сам html-файл создается правильно с кодировкой UTF-8, как проверено с помощью кода Visual Studio, но метатег показывает:
<meta http-equiv=Content-Type content = "text/html; charset=windows-1252">
Кроме того, если в электронном письме присутствует специальный символ, например «á», вместо этого оно сохраняется с таким символом, как этот «�».
Не знаю, актуально ли это, но на моем компьютере установлен язык «Португальский (Бразилия)».
Я пробовал:
Вот соответствующий код:
Sub loopEmail(ByVal emails As outlook.Items)
Dim email As Object
Dim qtdEmails As Integer: qtdEmails = 1
'Loops through each e-mail
Dim i As Integer
For i = emails.Count To 1 Step -1
Set email = emails(i)
'Verify if it's an email
If TypeOf email Is outlook.MailItem Then
'Saves ".msg" file
email.SaveAs "c:\test\email.msg", olMSGUnicode
'Saves ".html" file
email.SaveAs "c:\test\email.html", olHTML
End If
Next
Set email = Nothing
End Sub


Ваш код VBA правильно сохраняет тело сообщения в HTML.
Когда вы открываете свой HTML с помощью кода Visual Studio, вам необходимо изменить кодировку документа в правом нижнем углу VScode с «UTF-8» на «Windows 1252».
Альтернативно вы можете открыть свой HTML с помощью NotePad++.
Вы правы, хотя VS Code автоматически открывает файл с кодировкой UTF-8, когда я изменил его на windows-1252, недопустимые символы исчезли. Тем не менее, кодировку необходимо изменить на UTF-8, иначе я не смогу использовать ее на веб-сайте, который создаю. Я понял, что мой вопрос недостаточно ясен, поэтому отмечаю ваш ответ как принятый. Спасибо!