Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 05.03.2020
Сообщений: 4
Outlook

VBA изменить фон письма HTML

05.03.2020, 07:34. Показов 2485. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые знатоки VBA.
Помогите пожалуйста. Необходимо изменить фон письма через HTML.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Test()
    Dim Inspector As Outlook.Inspector
    Set Inspector = Application.ActiveInspector()
    '1 фон письма - рисунок с диска
Inspector.CurrentItem.HTMLBody = "<head><meta charset=utf-8><title>background-image</title><style>" _
& "body {background-image: url(C:\imagesKYRH6AYS.jpg); /* Путь к фоновому изображению */" _
& "background-color: #fafaf0; /* Цвет фона */" _
& "}</style></head><body><p>Привет</p></body>"
    '2 пытался фоном письма сделать фон из стандартной темы Outlook "Геометрия"
Inspector.CurrentItem.HTMLBody = "<head><meta charset=utf-8><title>background-image</title><style>" _
& "body {background-image: url(image001.gif@01CD3469.D1EB1F70); /* Путь к фоновому изображению */" _
& "background-color: #fafaf0; /* Цвет фона */" _
& "}</style></head><body><p>Привет</p></body>"
    '3
Inspector.CurrentItem.HTMLBody = "<head><meta charset=utf-8><title>background-image</title><style>" _
& "body {background-image: linear-gradient(white, gray); /* Путь к фоновому изображению */" _
& "background-color: #fafaf0; /* Цвет фона */" _
& "}</style></head><body><p>Привет</p></body>"
    Set Inspector = Nothing
End Sub
Подскажите где ошибка?
Цвет фона письма меняется а вот "background-image" не работает ни в одном из 3-х вариантов.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.03.2020, 07:34
Ответы с готовыми решениями:

HTML, CSS, как изменить фон страницы
Товарищи! Хелп! Имеется банальный ползунок на хтмл. Нужно сделать, чтоб юзеры смогли сами менять цвет фона страницы перемещая...

Фон письма
можно как-то сделать (только для 1 письма) фон письма? Добавлено: извеняюсь, вопрос снят, уже разобралась. Просто тема сначала не...

HTML редактор в программе для получения HTML письма
Собственно не могу решить проблему с HTML редактором в программе. хочу чтоб можно было делать красивый текст письма сохранять его в html...

7
 Аватар для amd48
845 / 475 / 80
Регистрация: 18.05.2016
Сообщений: 1,267
Записей в блоге: 5
11.03.2020, 08:36
https://www.w3schools.com/html... ground.asp
не хватает апострофов вокруг пути
Visual Basic
1
2
3
4
5
<style>
body {
  background-image: url('C:\images\KYRH6AYS.jpg');
}
</style>
другой способ:
Visual Basic
1
<body style="background-image: url('image001.jpg');">
0
0 / 0 / 0
Регистрация: 05.03.2020
Сообщений: 4
11.03.2020, 09:56  [ТС]
Первый вариант не работает: картинка не вставляется

Второй вариант ругается на кавычки вокруг "background-image: url('image001.jpg');"
0
 Аватар для amd48
845 / 475 / 80
Регистрация: 18.05.2016
Сообщений: 1,267
Записей в блоге: 5
11.03.2020, 10:29
попробовал я сохранить письмо аутлука в html. Там такой синтаксис:
HTML5
1
<body bgcolor=white background="письмо.files/image001.png">
А так, проще всего, наверное, создать новое письмо, оформить его в своём вкусе, а потом запустить такую процедуру и посмотреть, как это сделано:
Visual Basic
1
2
3
4
5
Sub html_()
Dim Inspector As Outlook.Inspector
Set Inspector = Application.ActiveInspector()
Debug.Print Inspector.CurrentItem.HTMLBody
End Sub
0
0 / 0 / 0
Регистрация: 05.03.2020
Сообщений: 4
12.03.2020, 01:55  [ТС]
Попробовал Вашу процедуру, ничего не происходит, письмо не изменилось.
Подскажите пожалуйста где посмотреть "как это сделано"?

Изначально моё письмо создаётся через HTML:
Visual Basic
1
2
3
4
5
6
7
Sub Test()
Dim Inspector As Outlook.Inspector
Set Inspector = Application.ActiveInspector()
txt_hi = "Коллеги, Здравствуйте"
Inspector.CurrentItem.HTMLBody = "<p><em><span style=font-family:Calibri;color:#002972;font-size:11pt;>" & txt_hi
Set Inspector = Nothing
End Sub
Получается письмо уже в формате HTML, может по этому Ваша процедура не срабатывает, или просто я что-то не догоняю)

На другом форуме подсказали 2 варианта:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub Test_1()
Dim Inspector As Outlook.Inspector
Set Inspector = Application.ActiveInspector()
Dim sPicture
    sPicture = "C:\images.jpg"
Inspector.CurrentItem.HTMLBody = "<div><!--[if gte mso 9]>" & _
     "<v:background xmlns:v=""urn:schemas-microsoft-com:vml"" fill=""t"">" & _
      "<v:fill type=""tile"" src=""" & sPicture & """ color=""#66cc66""/>" & _
     "</v:background><![endif]--><table><tr><td>Привет</td></tr></table></div>"
Set Inspector = Nothing
End Sub
и

Visual Basic
1
2
3
4
5
6
Sub Test_2()
Dim Inspector As Outlook.Inspector
Set Inspector = Application.ActiveInspector()
Inspector.CurrentItem.HTMLBody = "<html><body style='background-image:url(""file:////C:/images.jpg"")'>Привет</body></html>"
Set Inspector = Nothing
End Sub
Оба варианта работают, но возникает другая проблема:
Фон вместе с письмом не летает, и у кого на диске "C:" по прописанному пути нет такой картинки получают письмо на белом фоне.
При этом если вручную установлена тема письма, то все получают письма на фоне этой темы.

Может кто подскажет, как из VBA установить тему письма, к примеру "Геометрия"?
Таким образом должно получиться установить фон который будет виден практически всем.
0
 Аватар для amd48
845 / 475 / 80
Регистрация: 18.05.2016
Сообщений: 1,267
Записей в блоге: 5
12.03.2020, 08:50
Цитата Сообщение от cfdjalex77 Посмотреть сообщение
где посмотреть "как это сделано"?
debug.print - это команда вывода значения переменной в окошко Immediate (можно открыть клавишами Ctrl+G) среды VBA
мой пример выводит туда разметку письма на языке html. с самим письмом ничего не происходит.
я думаю, упоминание темы в html-тексте тоже будет. Просто выведите себе и изучите
эта тема - не VBA и не хтмл даже Тут надо изучать саму разметку аутлука. про картинку там был относительный путь в формате cid:картинка.jpg. Скорее всего, она отправляется вместе с письмом, а аутлук по относительному пути из письма его и извлекает для отображения. Абсолютный путь c:\..., естественно, указывать нет смысла
0
0 / 0 / 0
Регистрация: 05.03.2020
Сообщений: 4
13.03.2020, 08:05  [ТС]
Спасибо большое за Ваше время!
Как я понял тему письма задаёт вот это:
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body bgcolor=white background="cid:image001.gif@01D5F945.F9 F0B8A0" lang=RU link="#660000" vlink="#003399" style='tab-interval:35.4pt'><img src="cid:image001.gif@01D5F945.F9F0B8A0" v:src="cid:image001.gif@01D5F945.F9F0B8A 0" v:shapes="_x0000_Mail" width=0 height=0 class=shape style='display:none;width:0;height:0'><!--[if gte mso 9]><xml>
<v:background id="_x0000_s1025" o:bwmode="white" o:targetscreensize="1024,768">
<v:fill src="cid:image001.gif@01D5F945.F9F0B8A0" o:title="strbkgde" type="frame" />
</v:background></xml><![endif]--><div class=WordSection1><p class=MsoNormal><b><span style='font-size:11.0pt;color:#0070C0'><o>&nbsp;</o></span></b></p></div></body></html>
Но как всё это преобразовать в читаемое VBA Outlook?
Чтоб можно было добавить после "Inspector.CurrentItem.HTMLBody = "
В исходном виде все промежуточные кавычки дают ошибку.
0
 Аватар для amd48
845 / 475 / 80
Регистрация: 18.05.2016
Сообщений: 1,267
Записей в блоге: 5
13.03.2020, 10:06
кавычки в строках надо вводить в виде двойных кавычек
т.е. обычный читаемый текст
шла "саша" по шоссе
в коде записывается
s="шла ""саша"" по шоссе"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2020, 10:06
Помогаю со студенческими работами здесь

Изменить class элемента с помощью onmouseover, например изменить фон ячейки в таблице
Можно ли изменить class элемента, с помощью onmouseover, например изменить фон ячейки в таблице

Картинка, как фон в шаблоне письма
Всем привет! Учу свой сайт отправлять пользователям письма по мылу, соответственно, формирую шаблон для писем, где в качестве шапки...

Сохранение письма на VBA
Добрый вечер! Хочу в Outlook создать правило, чтобы входящие письма на определенного человека сохранялись в отдельную папку на диске...

VBA Excel-Outlook - id письма
Имеет ли каждое письмо в outlook'е свой ID-шник? Если имеет, то как его узнать? Суть задачи в следующем - в Excel'е вести подобие...

MS Access VBA отправка письма без outlook
Доброго времени суток всем. Возникла необходмостъ отправить репорт по емаилу без юзера в Outlookе из-за политики безопасности. Ести...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru