Inlineshapes addpicture параметры в 1с 8
В работе программиста 1С, данный функционал требуется крайне редко, хотя благодаря нему можно решать довольно сложные задачи с динамическими и не постоянными печатными формами. При реализации данной задачи, работа по созданию шаблонов Word и расстановке закладок в шаблоне Word возлагается на пользователей 1C.
В данном примере будет показано, как используя механизмы 1С и документа Word в качестве шаблона, можно создать печатную форму для вывода данных, пользователям программы 1С.
Создадим шаблон на основе документа Word для 1С. Сначала необходимо включить показ закладок для более удобной работы с документом:
Использование шаблонов Word в 1С
Использование шаблонов Word в 1С
Далее необходимо в файл шаблона для 1С, добавить текст и пару закладок. Закладка добавляется через меню «Вставка» — «Закладка». Нужно выделить текст закладки, скопировать его, открыть меню «Вставка — Закладка», вставить скопированный текст закладки и нажать «Добавить»:
Установка закладки, шаблон Word для 1С
Когда файл шаблона Word готов, создаем новую внешнею обработку в 1С, добавляем форму и в модуле формы вставляем следующий код:
В результат запуска внешней обработки 1С по формированию печатной формы на основе шаблона в виде файла Word, мы получим следующий результат:
Результат использования шаблонов Word в 1С
Информацию по методам COM объекта Word, а так же дополнительные данные можно узнать из MSDN.
Дополнение к заметке Использование шаблонов Word в 1С
Выражаю благодарность, всем тем, кто комментирует запись, благодаря вам, материал дополняется новыми данными и будет полезен более широкому кругу посетителей.
1. А как поменять размер шрифта во вставляемом тексте?
Достаточно изменить размер шрифта закладки, в шаблоне. А вот, если необходимо динамически менять размерность, тогда:
3. При выполнении кода: ОбъектВорд.Documents.Add(«C:/Шаблон.docx») (туда я поместил Ваш документ) получаю ошибку : «Ошибка при вызове метода контекста (Add)» в чем может быть причина?
Может попробовать изменить путь на: «C:\Шаблон.docx».
4. Подскажите пожалуйста еще почему при сохранении макета типа active document в файл word кодом:
5. У меня в документе есть ссылки на файлы которые расположены на сетевом диске. Как в шаблоне сделать гиперссылку на эти файлы?
Интересный вопрос, если попробовать сделать запись макроса и посмотреть результат, то в Visual Basic добавление гиперссылки будет выглядеть следующим образом:
Привет всем. Есть некий шаблон документа Word. Каким образом средствами 1с определить, что в этом шаблоне-документе есть рисунок с именем "ПодписьГотов" и если есть , то заполнить его нужной картинкой?
Приходит в голову средствами VBScript обратиться к документу и ими же загрузить картинку. Как это реализовать?
НЕ обязательно привязываться к элементу управление с типом рисунок, вместо него может быть что угодно)
Я делал через Find и Execute.
Таким способом можно вставлять картинку путём поиска и замены текста.
Т.е., если в файле Word есть какое-нибудь ключевое слово, под которое нужно вставить картинку, нужно, чтобы ЗаменяемоеВыражение и ЗначениеЗамены были равны ключевому слову.
Аналогично, в верхнем колонтитуле Headers(1):
Для замены в нижнем колонтитуле колонтитуле необходимо использовать Документ.Sections(1).Footers(1).
А картинка то откуда должна подгружаться? Из 1с или из локального каталога?
В целом как-то так:
(5) Serega-artem, не вижу как Вы вставляете рисунок именно в подписьГотов?
Такой код добавляет картинку на следующую страницу, но не в определенное место.
(6) Manticor, Единственный вариант тогда, какой вижу - через закладки. Добавляете в макет закладку, и на ее место вставляете картинку:
(7) Serega-artem, в принцыпе подойдет, только как проверить есть ли закладка с именем "Закладка1" .
Первый моент: есть ли какие то свойства у добавляемого рисунка в плане высоты, ширины, автопропорции - как у полноценного рисунка?
Второй: Как при новом формировании документа-шаблона удалить старые подписи? и на их место вставить обновленный вариант.
(8) Manticor, Размер можно, вот так вот код будет выглядеть тогда:
Проверить закладку как то так
Второй: Как при новом формировании документа-шаблона удалить старые подписи? и на их место вставить обновленный вариант.
Не понял вопроса! Один текст другим заменить?
(10) Serega-artem, нет, вот вставил я первый раз вместо двух закладок картинки и вызываю вставку еще раз, тоесть нужно, чтобы старые картинки удалились а на их местор встали другие image)
(11) Striker, если я правильно понимаю данный метод подходит исключительно для колонтитулов? А как быть в моем случае? Как в вашем методе удалить ранее добавленные рисунки- т.е. сделать их замену на другие ?
Ребят, есть какая нить инфа в виде мануала по работе с Word из 1с?
(12) Manticor, Вы бы озвучили задачу более шире, а то как-то понятно, что ничего не понятно) Вам нужно вставить в нужное место в доке картинку? Я не пойму, зачем ее менять постоянно.
(14) Serega-artem, у меня рабочая конфигурация документооборота. В докобороте есть задчи. Отвественный в задаче - он же подписант договора, постоянно меняется. Нужно при смене подписанта кажды раз вставлять другую подпись.
(15) Manticor, И чем тогда с закладками проблема? Смотрите, создаете шаблон документа в .dot. В нем шаблон вашего договора, в определенном месте создаете закладку. На основе шаблона формируете документ, вставляя на место закладки нужную картинку. Со сформированным доком можно делать что угодно потом, а шаблон так и остается неизменным. Тоже самое можно делать не через с закладку, а через поиск и замену (выше вам код писали).
"НЕ обязательно привязываться к элементу управление с типом рисунок, вместо него может быть что угодно) "
Если я правильно понимаю инглиш, в документе ворда есть две коллекции картинок - Shapes (плавающие) и InlineShapes (внутри текста).
Мануалов не знаю, обычно записывается макрос, нудно вычитывается хелп на инглише по использованным процедурам, функциям, константам, код переписывается в виде простых вызовов функций без использования := , и затем применяется в 1С через точку к заданному объекту типа ворд. Как-то так.
Даже если в документе есть пара картинок, то Selection.InlineShapes.Count - показывает 0.
Попробуйте без Selection, например
Что если каждому подписанту временно сделать свой комплект шаблонов, чтобы было время на вдумчивое изучение VBA?
(17) v3rter, времени как всегда нет(
Попробовал записать макрос. В Созданном документе встал на картинку и удалил ее. Код удаления в VB такой:
Selection.Delete Unit:=wdCharacter, Count:=1
И как это "чудо" с 1С подружить? Selection понято откуда, а Unit:=wdCharacter, Count:=1 ??
(19) Manticor, посмотреть, какой объект в предыдущей строке объект.Select и к нему применятьобъект.Delete
Unit:=wdCharacter - это константа, значение можно или подсмотреть в отладчике ворда или нагуглить
Count:=1 - удалить один символ, то есть картинка была вставлена в текст.
У ворда своя нотация, без скобок и с именованием параметров, но есть и "скобочная версия", когда параметры перечисляются как в нормальном языке программирования в определенной последовательности в скобках.
Можно прочитать ворд файл как XML. и в нем легко найти и заменить нужный рисунок. Да и вместо закладки картинку тоже вставить просто довольно таки.
ЗЫ: Обратите внимание на расширения рисунков - там "jpeg" а не "jpg". Сначала попробовал и удивился когда файл не открылся.
ЗЫЗЫ: Работаю таким способом из 1с очень давно, и очень редко вижу его у людей - пользуйтесь на здоровье)
Нужно смотреть ваш файл, что у него внутри) вот обертка по распаковке упаковке. На входе выходе двоичные файлы.
Еще раз напоминаю что только docx.
(24) SkrAn, да, инетресное решение.
Пытался найти в document.xml рисунок image.jpg или путь к нему. Не увидел. Как ворд прописывает пути к картинкам в xml ?
По теме. Я вот только одного не понимаю, зачем постоянно заменять картинку? Исходя из описанной выше задачи нужно просто вставить картинку в специально отмеченное место в создаваемом из шаблона документе MS Word. На каком этапе нужна перезамена?
Есть еще вариант, правда сугубо теоретический и без гарантий, что это будет работать. Насколько помню, ворд позволяет не только вставить картинку, но и связать документ с картинкой иными словами, поставить ссылку на картинку. Может в эту сторону покопать? Просто изменять в шаблоне ссылку на картинку в зависимости от того, какую нужно вставлять?
(33) SkrAn, спасибо за ваш метод путем разархивирования. Сделал через него, ибо просто нет инфы как средствами 1с понять, что в ворде есть объект -рисунок с неким именем.
Комменты полезные. Пост добавил в закладки.
Оставлю здесь еще кусок кода, чтобы не потерять
ЗаменаКолонтитула=Док.sections.item(1).footers.item(1);
//--Просто вставить строку
ЗаменаКолонтитула.Range.Text=СокрЛП("Привет");
//--Вставить картинку
ЗаменаКолонтитула.Range.InlineShapes.AddPicture("q:\1.jpg",
False, //LinkToFile
True //SaveWithDocument
);
Док.SaveAs("q:\test.doc");
Док.Close(0);
//ЗапуститьПриложение("""" + "q:\test.doc" + """");
Исключение
Сообщить(ОписаниеОшибки());
Word.Quit();
КонецПопытки;
КонецПроцедуры
Часто при создании документа из макета используют метод замены кусков текста. В примере представлен другой вариант выполнения того же действия - с использованием закладок. Также представлен пример построения нумерованного списка, вставки картинки, настройки ее параметров.
Не ленитесь ставить плюсики. Вам все равно - а мне приятно, и повергает еще что-нибудь полезное написать.
Пример использования описанных возможностей прост. При формировании коммерческого предложения бывает необходимо описать список условий, добавить изображение образца продукции.
Для отображения закладок включите эту опцию в настройках вашего Word'а.
В моем примере я заранее создал новый пустой документ, путь к документу и картинке прописан в тексте. Не забудьте указать свои пути.
Тестировалось на Office 2007.
Частично текст повторяет предыдущий пример. Некоторые переменные переименованы по стандарту Office: Text --> Selection. Doc --> ThisDocument.
Вот текст модуля:
Процедура ВыполнитьОбработку () Экспорт
//Объект = ПолучитьCOMОбъект(ПутьКФайлу);
Объект = ПолучитьCOMОбъект ( "C:\Users\NKrylov\Desktop\Тест.docx" );
// Покажем документ.
Объект . Application . Visible = 1 ;
Word = Объект . Application ;
ThisDocument = Word . Documents ( 1 );
ThisDocument . Activate ();
// Отключим проверку грамматики и вывод информации о грамматических ошибках.
ThisDocument . GrammarChecked = 0 ;
ThisDocument . ShowGrammaticalErrors = 0 ;
// Готовим переменную в которой будет содержимое документа (текст).
Selection = Word . Selection ;
// Очистим документ
// Ctrl-A
Selection . WholeStory ();
// Del
Selection . Delete ( 1 , 1 );
// Уменьшим междустрочный интервал.
Selection . ParagraphFormat . LineSpacingRule = 0 ; // 1 по умолчанию
Selection . ParagraphFormat . SpaceAfter = 0 ; // 10 по умолчанию
// Разметим документ. Это можно сделать и предварительно в макете
ThisDocument . Bookmarks . Add ( "Закладка1" , Selection . Range ());
Selection . TypeParagraph ();
Selection . TypeText ( "34r3 " );
Selection . HomeKey (, 1 );
ThisDocument . Bookmarks . Add ( "Закладка2" , Selection . Range ());
Selection . EndKey ();
Selection . TypeParagraph ();
ThisDocument . Bookmarks . Add ( "Закладка3" , Selection . Range ());
Selection . TypeParagraph ();
ThisDocument . Bookmarks . Add ( "Закладка4" , Selection . Range ());
Selection . EndKey ();
// Так можно работать с текстом только в конкреной области документа - это и будет замена метода Find-Execute.
ThisDocument . Bookmarks ( "Закладка3" ). Range . Select ();
Selection = Word . Selection ;
Bookmark = ThisDocument . Bookmarks ( "Закладка3" );
Table = ThisDocument . Tables . Add ( Bookmark . Range (), 1 , 5 , 1 , 2 );
Table . Rows ( 1 ). Cells ( 1 ). Range . Text = 1 ;
Table . Rows ( 1 ). Cells ( 2 ). Range . Text = 2 ;
Table . Rows ( 1 ). Cells ( 3 ). Range . Text = 3 ;
Table . Rows ( 1 ). Cells ( 4 ). Range . Text = 4 ;
Table . Rows ( 1 ). Cells ( 5 ). Range . Text = 5 ;
// После вывода таблицы, появится "лишняя строка", удалим ее
// в результате курсор встанет в область закладки 4
Selection . MoveDown (, 1 );
Selection . Delete ( 1 , 1 );
// Этот текст будет выведен не с последней позиции курсора, а в активной области.
// в данном случае - в области закладки 2
ThisDocument . Bookmarks ( "Закладка2" ). Range . Select ();
Selection = Word . Selection ;
Text = Selection . Range . Text ;
Selection . TypeText ( Text + " sdcsdcs" );
// При выводе текста закладка "сбросилась". Восстановим.
// "Победить" эту проблему я так и не смог((
// Хотя на практике, закладка больше и не понадобится.
// Дважды выводить текст в одну и ту же область - не имеет смысла.
Selection . HomeKey (, 1 );
ThisDocument . Bookmarks . Add ( "Закладка2" , Selection . Range ());
Selection . EndKey ();
// В области закладки 4 сформируем нумерованный список
ThisDocument . Bookmarks ( "Закладка4" ). Range . Select ();
Selection = Word . Selection ; // активная (выделенная) область будет начинаться
// от закладки 4)
// Добавим текст "для опытов"
// 1
Selection . TypeText ( "sdcsdcsdcsdc" );
Selection . TypeParagraph ();
// 2
Selection . TypeText ( "sdcsdcsdcsdc" );
Selection . TypeParagraph ();
// 3
Selection . TypeText ( "sdcsdcsdcsdc" );
Selection . TypeParagraph ();
// 4
Selection . TypeText ( "sdcsdcsdcsdc" );
Selection . TypeParagraph ();
// Выделяем введенный текст
Selection . MoveUp (, 4 , 1 );
// Применим шаблон к выделенному тексту
Selection . Range . ListFormat . ApplyListTemplateWithLevel ( Word . ListGalleries ( 2 ). ListTemplates ( 1 ));
// Перейдем в конец текста
Selection . EndKey ( 6 );
// Добавим картинку
// Параметры: путь к файлу, создавать ссылку на картинку, сохранять с файлом
Picture = Selection . InlineShapes . AddPicture ( "C:\Users\NKrylov\Desktop\Новый.bmp" , Ложь, Истина);
// Зададим размер
Picture . Height = 100 ;
Picture . Width = 150 ;
// Чтобы установить обтекание текста, конвертируем рисунок в фигуру
Shape = Picture . ConvertToShape ();
Shape . WrapFormat . Type = 0 ; // по контуру.
ThisDocument . Save ();
//Объект.Application.Quit();
Объект = Неопределено;
Исключение
ThisDocument . Save ();
Сообщить ( ОписаниеОшибки ());
//Объект.Application.Quit();
Объект = Неопределено;
КонецПопытки;
Добавляет изображение в документ. Возвращает объект InlineShape , который представляет изображение.
Синтаксис
выражение. AddPicture ( _FileName_ , _LinkToFile_ , _SaveWithDocument_ , _Range_ )
выражение (обязательно). Переменная, представляюная коллекцию "InlineShapes".
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
FileName | Обязательный | String | Путь и имя файла изображения. |
LinkToFile | Необязательный | Variant | True для привязки изображения к файлу, из которого он был создан. False , чтобы сделать изображение независимой копией файла. Значение по умолчанию — False. |
SaveWithDocument | Необязательный | Variant | True для сохранения связанной картинки с документом. Значение по умолчанию — False. |
Range | Необязательный | Variant | Расположение, в котором изображение будет размещено в тексте. Если диапазон не свернут, изображение заменяет диапазон; в противном случае изображение вставляется. Если этот аргумент опущен, изображение помещается автоматически. |
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Sub ВставитьПодписьПечать()
ActiveDocument.Shapes.AddPicture(Anchor:=Selection.Range, FileName:= _
"C:\Users\kpa\Pictures\подпись.jpg", LinkToFile:=False, _
SaveWithDocument:=True).WrapFormat.Type = wdWrapNone
ActiveDocument.Shapes.AddPicture(Anchor:=Selection.Range, FileName:= _
"C:\Users\kpa\Pictures\печать.jpg", LinkToFile:=False, _
SaveWithDocument:=True).WrapFormat.Type = wdWrapNone
End Sub
Не могу найти как прикрепить эти изображения к нужному месту
В бланке две таблицы. Даже если ставить курсор в нужную ячейку, то все равно картинки вставляются в верхний левый угол.
Можно сделать какую-нибудь скрытую закладку на нужном месте и прикреплять картинку относительно этой закладки на определённом расстоянии?
(в режиме записи макроса никакие функции работы с картинкой (типа обтекания, изменения прикрепления и прочее) не работают и поэтому разобраться по аналогии не получается)
Sub ВставитьПодписьПечать()
ActiveDocument.Shapes.AddPicture(Anchor:=Selection.Range, FileName:= _
"C:\Users\kpa\Pictures\подпись.jpg", LinkToFile:=False, _
SaveWithDocument:=True).WrapFormat.Type = wdWrapNone
ActiveDocument.Shapes.AddPicture(Anchor:=Selection.Range, FileName:= _
"C:\Users\kpa\Pictures\печать.jpg", LinkToFile:=False, _
SaveWithDocument:=True).WrapFormat.Type = wdWrapNone
End Sub
Не могу найти как прикрепить эти изображения к нужному месту
В бланке две таблицы. Даже если ставить курсор в нужную ячейку, то все равно картинки вставляются в верхний левый угол.
Можно сделать какую-нибудь скрытую закладку на нужном месте и прикреплять картинку относительно этой закладки на определённом расстоянии?
(в режиме записи макроса никакие функции работы с картинкой (типа обтекания, изменения прикрепления и прочее) не работают и поэтому разобраться по аналогии не получается) карандаш
Sub ВставитьПодписьПечать()
ActiveDocument.Shapes.AddPicture(Anchor:=Selection.Range, FileName:= _
"C:\Users\kpa\Pictures\подпись.jpg", LinkToFile:=False, _
SaveWithDocument:=True).WrapFormat.Type = wdWrapNone
ActiveDocument.Shapes.AddPicture(Anchor:=Selection.Range, FileName:= _
"C:\Users\kpa\Pictures\печать.jpg", LinkToFile:=False, _
SaveWithDocument:=True).WrapFormat.Type = wdWrapNone
End Sub
Не могу найти как прикрепить эти изображения к нужному месту
В бланке две таблицы. Даже если ставить курсор в нужную ячейку, то все равно картинки вставляются в верхний левый угол.
Можно сделать какую-нибудь скрытую закладку на нужном месте и прикреплять картинку относительно этой закладки на определённом расстоянии?
(в режиме записи макроса никакие функции работы с картинкой (типа обтекания, изменения прикрепления и прочее) не работают и поэтому разобраться по аналогии не получается) Автор - карандаш
Дата добавления - 16.04.2015 в 08:00
Dim p As InlineShape
Set p = ThisDocument.Tables(1).Rows(2).Cells(2).Range.InlineShapes.AddPicture("d:\path\name.jpg", False, True)
Dim p As InlineShape
Set p = ThisDocument.Tables(1).Rows(2).Cells(2).Range.InlineShapes.AddPicture("d:\path\name.jpg", False, True)
Dim p As InlineShape
Set p = ThisDocument.Tables(1).Rows(2).Cells(2).Range.InlineShapes.AddPicture("d:\path\name.jpg", False, True)
anvg, вставка происходит "во внутрь", т.е. ячейка расширяется до размеров картинки. Как задать .WrapFormat.Type = wdWrapNone или как называется свойство "поверх текста" - не знаю. Справка не помогла.
anvg, вставка происходит "во внутрь", т.е. ячейка расширяется до размеров картинки. Как задать .WrapFormat.Type = wdWrapNone или как называется свойство "поверх текста" - не знаю. Справка не помогла. карандаш
Public Sub insPic()
Dim p As InlineShape, t As Shape
Set p = ThisDocument.Tables(1).Rows(2).Cells(2).Range.InlineShapes.AddPicture("d:\path\name.jpg", False, True)
p.ScaleWidth = 20
p.ScaleHeight = 20
Set t = p.ConvertToShape
t.WrapFormat.Type = wdWrapNone
End Sub
Public Sub insPic()
Dim p As InlineShape, t As Shape
Set p = ThisDocument.Tables(1).Rows(2).Cells(2).Range.InlineShapes.AddPicture("d:\path\name.jpg", False, True)
p.ScaleWidth = 20
p.ScaleHeight = 20
Set t = p.ConvertToShape
t.WrapFormat.Type = wdWrapNone
End Sub
Public Sub insPic()
Dim p As InlineShape, t As Shape
Set p = ThisDocument.Tables(1).Rows(2).Cells(2).Range.InlineShapes.AddPicture("d:\path\name.jpg", False, True)
p.ScaleWidth = 20
p.ScaleHeight = 20
Set t = p.ConvertToShape
t.WrapFormat.Type = wdWrapNone
End Sub
Хотелось бы уточнить
Как можно изменить положение рисунка на странице относительно страницы?
Например, при клике на рисунке правой кнопкой мыши выпадает выпадающее меню. Предпоследняя строка меню - "Размер и положение".
Кликнув на этом элементе меню получаем окошко "Разметка" с тремя табуляторами/закладками.
Первая закладка "Положение". В ней по горизонтали и вертикали выбираем "относительно [страницы]" и ставим числовое значение.
В макрос эти действия не записываются.
А как это можно выставить в самом макросе?
Хотелось бы уточнить
Как можно изменить положение рисунка на странице относительно страницы?
Например, при клике на рисунке правой кнопкой мыши выпадает выпадающее меню. Предпоследняя строка меню - "Размер и положение".
Кликнув на этом элементе меню получаем окошко "Разметка" с тремя табуляторами/закладками.
Первая закладка "Положение". В ней по горизонтали и вертикали выбираем "относительно [страницы]" и ставим числовое значение.
В макрос эти действия не записываются.
А как это можно выставить в самом макросе? карандаш
Как можно изменить положение рисунка на странице относительно страницы?
Например, при клике на рисунке правой кнопкой мыши выпадает выпадающее меню. Предпоследняя строка меню - "Размер и положение".
Кликнув на этом элементе меню получаем окошко "Разметка" с тремя табуляторами/закладками.
Первая закладка "Положение". В ней по горизонтали и вертикали выбираем "относительно [страницы]" и ставим числовое значение.
В макрос эти действия не записываются.
А как это можно выставить в самом макросе? Автор - карандаш
Дата добавления - 14.05.2015 в 14:38
Public Sub insPic()
Dim pShape As Shape
Set pShape = ThisDocument.Shapes(1)
pShape.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
pShape.RelativeVerticalPosition = wdRelativeVerticalPositionPage
pShape.Left = 100
pShape.Top = 200
End Sub
Public Sub insPic()
Dim pShape As Shape
Set pShape = ThisDocument.Shapes(1)
pShape.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
pShape.RelativeVerticalPosition = wdRelativeVerticalPositionPage
pShape.Left = 100
pShape.Top = 200
End Sub
Public Sub insPic()
Dim pShape As Shape
Set pShape = ThisDocument.Shapes(1)
pShape.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
pShape.RelativeVerticalPosition = wdRelativeVerticalPositionPage
pShape.Left = 100
pShape.Top = 200
End Sub
здравствуйте, да
а вот "всё так же по справке" - это где? можно уточнить?
а то я опять ничего не смог найти. Не там смотрю или не вижу.
Помогите найти, пожалуйста.
здравствуйте, да
а вот "всё так же по справке" - это где? можно уточнить?
а то я опять ничего не смог найти. Не там смотрю или не вижу.
Помогите найти, пожалуйста. карандаш
Добрый день!
Подскажите, пожалуйста, по такому вопросу. Пытаюсь вставить картинку с печатью в определенное место в файле WORD из EXCEL.
Т.к. с объектной моделью WORD не знаком, то не понимаю, как вставить картинку в конкретное место.
Sub InsertPicture()
Dim wdTable As Object
Dim objWrdDoc As Object
Dim strFile As String
Dim p As InlineShape, t As Object
Dim pShape As Object
On Error Resume Next
strFile = "C:\Users\BaranovVO\Desktop\Вставка печати\Документ.docx"
'прописать путь к Документу
Set objWrdApp = GetObject(, "Word.Application") 'пытаемся подключится к объекту Word
If objWrdApp Is Nothing Then
Set objWrdApp = CreateObject("Word.Application") 'если приложение закрыто - создаем новый экземпляр
Set objWrdDoc = objWrdApp.Documents.Open(strFile) 'открываем документ Word - документ с таким именем должен существовать
objWrdApp.Visible = True
End If
Set objWrdDoc = objWrdApp.Documents.Open(strFile)
On Error GoTo 0
Set WdRange = objWrdDoc.Content
Set wdTable = WdRange.Tables(1)
Set p = wdTable.Rows(1).Cells(1).Range.InlineShapes.AddPicture("C:\Users\BaranovVO\Desktop\Вставка печати\печать.jpg", False, True)
'прописать путь к картинке
'вставил абы куда, куда получилось, хотелось бы вставить сразу куда нужно
p.ScaleWidth = 20
p.ScaleHeight = 20
Set t = p.ConvertToShape
t.WrapFormat.Type = wdWrapNone
t.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
t.RelativeVerticalPosition = wdRelativeVerticalPositionPage
t.Left = 260 'значения, конкретно под этот случай
t.Top = 370 'значения, конкретно под этот случай
Попытаюсь объяснить в чем трудность, хотя возможно я изначально думаю не в том направлении и WORD так не работает.
Первое, что я делаю это вставляю картинку просто куда получилось. Можно ли ее вставить сразу туда куда надо (между блоками с номером доверенности и фамилией подписанта, макрос, который есть в файле, поставит картинку туда, куда задумывается, если прописать путь к картинке и к файлу).
И второе, я вставил картинку, и следующими параметрами пытаюсь ее поставить на место.
[vba]
[/vba]
Но, отступ слева всегда будет одинаковым, а вот сверху не всегда (строк в таблице может быть как больше так и меньше). Как сделать этот параметр динамическим?
Общий вопрос: как вставить картинку между блоками "Руководитель проекта" и "Петров И.И."
Добрый день!
Подскажите, пожалуйста, по такому вопросу. Пытаюсь вставить картинку с печатью в определенное место в файле WORD из EXCEL.
Т.к. с объектной моделью WORD не знаком, то не понимаю, как вставить картинку в конкретное место.
Sub InsertPicture()
Dim wdTable As Object
Dim objWrdDoc As Object
Dim strFile As String
Dim p As InlineShape, t As Object
Dim pShape As Object
On Error Resume Next
strFile = "C:\Users\BaranovVO\Desktop\Вставка печати\Документ.docx"
'прописать путь к Документу
Set objWrdApp = GetObject(, "Word.Application") 'пытаемся подключится к объекту Word
If objWrdApp Is Nothing Then
Set objWrdApp = CreateObject("Word.Application") 'если приложение закрыто - создаем новый экземпляр
Set objWrdDoc = objWrdApp.Documents.Open(strFile) 'открываем документ Word - документ с таким именем должен существовать
objWrdApp.Visible = True
End If
Set objWrdDoc = objWrdApp.Documents.Open(strFile)
On Error GoTo 0
Set WdRange = objWrdDoc.Content
Set wdTable = WdRange.Tables(1)
Set p = wdTable.Rows(1).Cells(1).Range.InlineShapes.AddPicture("C:\Users\BaranovVO\Desktop\Вставка печати\печать.jpg", False, True)
'прописать путь к картинке
'вставил абы куда, куда получилось, хотелось бы вставить сразу куда нужно
p.ScaleWidth = 20
p.ScaleHeight = 20
Set t = p.ConvertToShape
t.WrapFormat.Type = wdWrapNone
t.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
t.RelativeVerticalPosition = wdRelativeVerticalPositionPage
t.Left = 260 'значения, конкретно под этот случай
t.Top = 370 'значения, конкретно под этот случай
Попытаюсь объяснить в чем трудность, хотя возможно я изначально думаю не в том направлении и WORD так не работает.
Первое, что я делаю это вставляю картинку просто куда получилось. Можно ли ее вставить сразу туда куда надо (между блоками с номером доверенности и фамилией подписанта, макрос, который есть в файле, поставит картинку туда, куда задумывается, если прописать путь к картинке и к файлу).
И второе, я вставил картинку, и следующими параметрами пытаюсь ее поставить на место.
[vba]
[/vba]
Но, отступ слева всегда будет одинаковым, а вот сверху не всегда (строк в таблице может быть как больше так и меньше). Как сделать этот параметр динамическим?
Общий вопрос: как вставить картинку между блоками "Руководитель проекта" и "Петров И.И."
Sub InsertPicture()
Dim wdTable As Object
Dim objWrdDoc As Object
Dim strFile As String
Dim p As InlineShape, t As Object
Dim pShape As Object
On Error Resume Next
strFile = "C:\Users\BaranovVO\Desktop\Вставка печати\Документ.docx"
'прописать путь к Документу
Set objWrdApp = GetObject(, "Word.Application") 'пытаемся подключится к объекту Word
If objWrdApp Is Nothing Then
Set objWrdApp = CreateObject("Word.Application") 'если приложение закрыто - создаем новый экземпляр
Set objWrdDoc = objWrdApp.Documents.Open(strFile) 'открываем документ Word - документ с таким именем должен существовать
objWrdApp.Visible = True
End If
Set objWrdDoc = objWrdApp.Documents.Open(strFile)
On Error GoTo 0
Set WdRange = objWrdDoc.Content
Set wdTable = WdRange.Tables(1)
Set p = wdTable.Rows(1).Cells(1).Range.InlineShapes.AddPicture("C:\Users\BaranovVO\Desktop\Вставка печати\печать.jpg", False, True)
'прописать путь к картинке
'вставил абы куда, куда получилось, хотелось бы вставить сразу куда нужно
p.ScaleWidth = 20
p.ScaleHeight = 20
Set t = p.ConvertToShape
t.WrapFormat.Type = wdWrapNone
t.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
t.RelativeVerticalPosition = wdRelativeVerticalPositionPage
t.Left = 260 'значения, конкретно под этот случай
t.Top = 370 'значения, конкретно под этот случай
Попытаюсь объяснить в чем трудность, хотя возможно я изначально думаю не в том направлении и WORD так не работает.
Первое, что я делаю это вставляю картинку просто куда получилось. Можно ли ее вставить сразу туда куда надо (между блоками с номером доверенности и фамилией подписанта, макрос, который есть в файле, поставит картинку туда, куда задумывается, если прописать путь к картинке и к файлу).
И второе, я вставил картинку, и следующими параметрами пытаюсь ее поставить на место.
[vba]
[/vba]
Но, отступ слева всегда будет одинаковым, а вот сверху не всегда (строк в таблице может быть как больше так и меньше). Как сделать этот параметр динамическим?
Общий вопрос: как вставить картинку между блоками "Руководитель проекта" и "Петров И.И."
Читайте также: