Word VBA: Вставить в word картинку в поле

Автор Manticor, 03 августа 2016, 18:22

Manticor

Есть некий шаблон документа Word.
Каким образом определить, что в этом шаблоне-документе есть рисунок с именем "ПодписьГотов" и если есть, то очистить этот элемент с рисунком и заполнить его нужной картинкой?


[вложение удалено администратором]

Администратор

В макросе посмотрите один комментарий.

Sub Макрос()
   
    Dim objContControl As ContentControl
   
    For Each objContControl In ActiveDocument.ContentControls
       
        If objContControl.Title = "ПодписьГотов" Then
            objContControl.Range.Delete
            ' В параметре "FileName" укажите полное имя (путь + имя) файла-рисунка.
            ActiveDocument.InlineShapes.AddPicture FileName:="C:\Users\User\Desktop\Chrysanthemum.jpg", _
                LinkToFile:=False, SaveWithDocument:=True, Range:=objContControl.Range
            Exit For
        End If
   
    Next objContControl
   
End Sub

Manticor

Спасибо большое! Теперь нужно как то это все сделать через синтаксис 1с.

Администратор

Я сталкивался на форумах, что VBA в 1C работает в некоторых случаях не так, как VBA в офисе, поэтому на этом форуме вам не помогут с адаптацией к 1C, это вам нужно идти на форумы по 1С.

Manticor

Все чудесно работает! Я смог подружить 1с и VBA Вашим скриптом.

Подскажите пожалуйста - как возможно задать размеры объекта/картинки - Height и Width?
Или быть может можно сделать так, чтобы картинка вставала по размерам элемента управления? У элемента управления при вставке сбрасывается параметр "сохранить пропорции".

Как его выставлять обратно в истину?

[вложение удалено администратором]

Администратор

Пункт 1

Цитата:
Или быть может можно сделать так, чтобы картинка вставала по размерам элемента управления? У элемента управления при вставке сбрасывается параметр "сохранить пропорции".

У этого элемента управления нет параметра "сохранить пропорции", это вы смотрите свойства чего-то другого, предположу, рисунка.


Пункт 2

Макрос
Sub Макрос()
   
    Dim objContControl As ContentControl, inlineshp As InlineShape
   
    For Each objContControl In ActiveDocument.ContentControls
       
        If objContControl.Title = "ПодписьГотов" Then
       
            '1. Очистка элемента управления.
            objContControl.Range.Delete
           
            '2. Вставка рисунка и vba-именование рисунка. Рисунку присвоится vba-имя "inlineshp"
                ' и с помощью этого имени можно управлять рисунком.
            ' В параметре "FileName" укажите полное имя (путь + имя) файла-рисунка.
            Set inlineshp = ActiveDocument.InlineShapes.AddPicture(FileName:="C:\Users\User\Desktop\Chrysanthemum.jpg", _
                LinkToFile:=False, SaveWithDocument:=True, Range:=objContControl.Range)
           
            '3. Чтобы сохранялись пропорции рисунка.
            inlineshp.LockAspectRatio = True
           
            '4. Изменение размеров рисунка. Если используется "LockAspectRatio" (это команда выше),
                ' то тогда нужно задавать какой-то один размер (это логично).
                ' Устанавливается размер 5 см.
            inlineshp.Height = Application.CentimetersToPoints(5)
            inlineshp.Width = Application.CentimetersToPoints(5)
           
            '5. Выход из цикла, т.к. надо было найти только один элемент управления.
            Exit For
           
        End If
   
    Next objContControl
   
End Sub
[свернуть]

Manticor

Все работает! Спасибо огромное за поддержку.