Sub Макрос()
Dim shape As shape
Dim FN As String
‘ Полное имя файла-рисунка.
FN = «C:UsersUserDesktopРисунок.png»
‘ Вставка неплавающего рисунка и превращение неплавающего рисунка в плавающий.
‘ При этом присваиваем рисунку имя ‘shape’ и далее в коде будем обращаться
‘ к рисунку по имени ‘shape’.
Set shape = Selection.InlineShapes.AddPicture(FileName:=FN, LinkToFile:=False, _
SaveWithDocument:=True, Range:=Selection.Range).ConvertToShape
‘ Здесь можете делать нужные действия с рисункам, используя имя ‘shape’.
‘ Например, так можно узнать левое положение рисунка.
‘ Информация запишется в View — Immediate Window.
Debug.Print shape.Left
End Sub
[свернуть]
Только что появилась такая же проблема. Решил тем, что в шаблоне документ Word устанавливаю закладку там, куда мне нужно вставить изображение: Вставка -> Ссылки -> Закладка. Даю ей имя, к примеру Mark1.
В коде пишу:
C# | ||
|
где path
— путь до изображения; wordDocument.Bookmarks["MARK1"]
— свойство, которое является закладкой, которую вы установили в шаблоне документа(заранее нужно открыть этот шаблон). И у этого свойства есть объект Range, который указывает на позицию, в данном случае позицию нашей закладки.
Написал это все, так как долго искал в инете информацию по поводу того, как же мне вставить изображение в шаблон документа Word в определенное место. Так и не нашел, то что мне нужно. Пришлось самому допирать
Олег Кулиничев Пользователь Сообщений: 13 |
#1 28.03.2022 22:19:51 доброго времени суток на одном из сторонних форумов нашёл код для вставки в создаваемый документ Word картинки формата PNG (код ниже) при вставке в документ Word картинки с печатью она вставляется в определённое место с типом форматирования «В тексте» помогите, пожалуйста, решить мою проблему; 1) как сделать после вставки картинки её «За текстом», а не «В тексте» заранее спасибо
Прикрепленные файлы
|
||
whateverlover Пользователь Сообщений: 435 |
#2 28.03.2022 23:09:34 моя печать
Вот это, скорей всего, отвечает за то «в тексте» она будет или «за текстом». Вот тут можно посмотреть какие есть варианты, вам, я так понял, подойдет wdWrapBehind. |
||
Олег Кулиничев Пользователь Сообщений: 13 |
#3 28.03.2022 23:53:19
Спасибо!!! А как по поводу места в документе? возможно привязать картинку к «закладке» в Word? |
||
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
Олег Кулиничев, Вы с правилами знакомились? Каком максимально допустимый суммарный размер файлов? |
whateverlover Пользователь Сообщений: 435 |
#5 29.03.2022 00:23:10
Объектную модель Word не знаю, нагуглил вот такое:
Я так понимаю, эта строчка вставит картинку В закладку «TEST». Попробуйте, может это не то. Изменено: whateverlover — 29.03.2022 00:26:20 |
||||
вставить картинку в определённое место |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Понадобилось мне тут в свое время писать много текста в MS Word, вставляя туда картинки. Понимая, что картинки рано или поздно понадобится переделывать, я пришел к необходимости вставки не картинок, а ссылок на них. Но вставить поле мало — крайне желательно еще и подписывать имя вставленной картинки.
При этом файл doc / docx может перемещаться между компьютерами (да, я пользуюсь и DropBox, и Yandex.Drive, и OneDrive). Соответственно надо вставлять относительные пути и подписывать их же. Не очень продолжительный поиск по сети и немного фантазии дали такой вариант:
1 |
Option Explicit Public sInitialPath As String Private Declare Function PathRelativePathToW _
Public Sub InsertLinkToPicture()
|
Но, как выяснилось, в MS Office 2013 x64 решение работать не будет (даже если попытаться корректно объявить импорт PathRelativePathToW, VBA отказывается обрабатывать указатели на строки). Поэтому было найдено другое решение:(исходник здесь):
Тогда по Ctrl+Z будет отменяться все целиком, а не по шагам. Нередко рядом с оригинальным файлом я кладу его «уменьшенную» копию (уменьшение выполняется с FastStone Image Viewer, картинка уменьшается до 35%, имя файла оканчивается на «_35%»). Если рядом с оригиналом есть уменьшенный вариант, в поле вставляется «уменьшенная» копия, а подпись идет на нормальный вариант. В результате получилось такое чудо:
1 |
Option Explicit Public sInitialPath As String Public Function GetRelativePath(ByVal sFrom As String, ByVal sTo As String) As String
Public Sub InsertLinkToPicture()
|
Форум программистов Vingrad
Модераторы: mihanik |
Поиск: |
|
Вставка рисунка в MS Word, с подрисуночной надписью !!! |
Опции темы |
bAndito |
|
||
Новичок Профиль Репутация: нет
|
Всем привет, мне необходимо в программе на VBA вставить рисунок в открытый документ Word. Под этим рисунком должна быть подрисуночная надпись. Как осуществит вставку рисунка с этой надписью. Может сталкивался кто с этим или знает как сделать. Я весь день искал, но так и не нашел ни какой информации. Заранее спасибо всем откликнувшимся. |
||
|
|||
Cyric |
|
||
Шустрый Профиль
Репутация: 3
|
Если вы совсем не знакомы с синтаксисом VBA и объектной моделью Word’а, то для написания простеших макросов можете воспользоваться кнопкой «Сервис=>Макрос=>Начать запись…» для автоматической генерации кода и последующего его изучения. Т.е. я например начав запись сделал вставку рисунка через «Вставка=>Рисунок=>Из файла», и был сгенерирован следующий код:
Дальше не состовляет никакого труда выделить метод AddPicture, или коллекцию InlineShapes и нажать F1 для более подробного изучения различных параметров этого метода и т.п. На ранних стадиях это очень хороший способ изучения объектной модели Excel’а или Word’а. Это сообщение отредактировал(а) Cyric — 9.10.2006, 19:41 |
||
|
|||
bAndito |
|
||
Новичок Профиль Репутация: нет
|
Cyric, огромное человеческое спасибо. У меня просто вылетело из головы про запись макроса. Относительно подрисуночной надписи. Как я предпологаю то это надпись типа Рис. 1 <имя рисунка> Имя можно выдрать из полного пути, а номер рисунка втыкать как переменную, увеличивая её после каждой вставки. Вооо… Это сообщение отредактировал(а) bAndito — 10.10.2006, 07:50 |
||
|
|||
Cyric |
|
||||
Шустрый Профиль
Репутация: 3
|
Можете воспользоваться следующим макросом
Вместо Selection там может быть Range Работает точно также, как если на вставленную картинку нажать правой кнопкой и выбрать «Название». Добавлено @ 09:52
|
||||
|
|||||
bAndito |
|
||
Новичок Профиль Репутация: нет
|
Спасибо за совет Все опробую |
||
|
|||
|
Правила форума «Программирование, связанное с MS Office» | |
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми
Если Вам понравилась атмосфера форума, заходите к нам чаще! |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |