Автор Тема: Word VBA: Вставить в word картинку в поле  (Прочитано 5771 раз)

Manticor

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


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

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Word VBA: Вставить в word картинку в поле
« Ответ #1 : 03 Август 2016, 19:53 »
В макросе посмотрите один комментарий.

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

  • Гость
Re: Word VBA: Вставить в word картинку в поле
« Ответ #2 : 04 Август 2016, 09:50 »
Спасибо большое! Теперь нужно как то это все сделать через синтаксис 1с.

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Word VBA: Вставить в word картинку в поле
« Ответ #3 : 04 Август 2016, 09:59 »
Я сталкивался на форумах, что VBA в 1C работает в некоторых случаях не так, как VBA в офисе, поэтому на этом форуме вам не помогут с адаптацией к 1C, это вам нужно идти на форумы по 1С.

Manticor

  • Гость
Re: Word VBA: Вставить в word картинку в поле
« Ответ #4 : 04 Август 2016, 10:49 »
Все чудесно работает! Я смог подружить 1с и VBA Вашим скриптом.

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

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

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

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Word VBA: Вставить в word картинку в поле
« Ответ #5 : 04 Август 2016, 13:08 »
Пункт 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

  • Гость
Re: Word VBA: Вставить в word картинку в поле
« Ответ #6 : 05 Август 2016, 09:51 »
Все работает! Спасибо огромное за поддержку.