VBA Macro генерирует html-файлы с недопустимыми символами

Я создал макрос в Excel 365, используя VBA. Его функция состоит в том, чтобы просмотреть некоторые электронные письма, хранящиеся в Outlook 365, и сохранить каждое из них в файле .msg и файле .html.

Пока что все работает нормально, за исключением того, что html-файлы генерируются с недопустимыми символами.

Сам html-файл создается правильно с кодировкой UTF-8, как проверено с помощью кода Visual Studio, но метатег показывает:

<meta http-equiv=Content-Type content = "text/html; charset=windows-1252">

Кроме того, если в электронном письме присутствует специальный символ, например «á», вместо этого оно сохраняется с таким символом, как этот «�».

Не знаю, актуально ли это, но на моем компьютере установлен язык «Португальский (Бразилия)».

Я пробовал:

  1. Ищу способ изменить кодировку команды «.saveAs» на UTF-8 или Unicode, но, похоже, она существует только для текстовых файлов, а не для электронных писем.
  2. Сохраните тело электронного письма в базе данных напрямую, без создания html-файла, но мне нужно, чтобы изображения присутствовали так же, как в Outlook, поэтому это тоже не сработало.

Вот соответствующий код:

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
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш код VBA правильно сохраняет тело сообщения в HTML.

Когда вы открываете свой HTML с помощью кода Visual Studio, вам необходимо изменить кодировку документа в правом нижнем углу VScode с «UTF-8» на «Windows 1252».

Альтернативно вы можете открыть свой HTML с помощью NotePad++.

Вы правы, хотя VS Code автоматически открывает файл с кодировкой UTF-8, когда я изменил его на windows-1252, недопустимые символы исчезли. Тем не менее, кодировку необходимо изменить на UTF-8, иначе я не смогу использовать ее на веб-сайте, который создаю. Я понял, что мой вопрос недостаточно ясен, поэтому отмечаю ваш ответ как принятый. Спасибо!

Gustavo Branco 17.05.2024 16:34

Другие вопросы по теме

Похожие вопросы

Функция SCAN не отображает шаги, за которыми следует функция REDUCE при расчете
Активируйте несколько листов в файле Excel с помощью OpenPyxl
Получите СУММПРОИЗВ с несколькими критериями столбца и строки, если таблица содержит значения, которые не являются числовыми
Получите СУММПРОИЗВ с несколькими критериями столбца и строки и игнорируйте критерии, если ячейка с критериями пуста
Определить имя столбца/номер столбца сортировки в Excel
Найти значение на листе 1, скопировать значение смещения, найти значение смещения на листе 2, вставить текст в ячейку смещения
Заполнение ListBox. «Ошибка выполнения '380': не удалось установить свойство List. Недопустимое значение свойства»
Создает список, содержащий рабочие листы и формулы в них
Как отфильтровать столбец, когда ячейки объединены вместе (Фильтр при объединении ячеек в Excel)
Как я могу перебрать все ячейки в объекте электронной таблицы ColdFusion?