Vba word заменить картинку
Добавляет изображение в рисунок холста. Возвращает объект Shape , представляющ изображение, и добавляет его в коллекцию CanvasShapes .
Синтаксис
выражения. AddPicture (FileName, LinkToFile, SaveWithDocument, Left, Top, Width, Height)
выражение (обязательно). Переменная, представляюная объект Shapes .
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
FileName | Обязательный | String | Путь и имя файла изображения. |
LinkToFile | Необязательный | Variant | True для привязки изображения к файлу, из которого он был создан. False , чтобы сделать изображение независимой копией файла. Значение по умолчанию — False. |
SaveWithDocument | Необязательный | Variant | True для сохранения связанной картинки с документом. Значение по умолчанию — False. |
Left | Необязательный | Variant | Положение, измеряемого в точках, левого края новой картинки относительно полотна рисования. |
Top | Необязательный | Variant | Положение, измеряемого в точках, верхнего края новой картинки по отношению к полотну рисования. |
Width | Необязательный | Variant | Ширина изображения в точках. |
Height | Необязательный | Variant | Высота изображения в точках. |
Возвращаемое значение
Пример
В этом примере изображение добавляется к недавно созданному полотну рисования в активном документе.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Приветствую.
Другой день бодаюсь со вставкой рисунков в Word.
В исходном файле пытаюся вставить рисунок в таблицу с 1 ячейкой содержащей закладку и установить его размеры.
Без костыля меняется только либо высота, либо ширина. При этом ошибки нет
Сегодня создал шаблон с таблицей в 1 ячейку, написал код для вставки
Аналогичным кодом вставляю рисунок на лист, но вылетаю с ошибкой.
Подскажите, где собака порылась? И как правильно?
Обработка идет из Excel.
w d .Bookmarks.Item(marker).Select
w a .Selection.InlineShapes.AddPicture
Эти строки работают, рисунок вставляется.
Не могу изменить размеры
В первом и последнем коде не работают фрагменты
Помнится мне, что у меня тоже не получалось. И я пересчитывал размер, если нужно было сохранить пропорции. Судя из объяснения на мсдн
True if the specified shape retains its original proportions when you resize it. False if you can change the height and width of the shape independently of one another when you resize it. Read/write MsoTriState. |
Этот параметр не реагирует на программное изменение ширины или высоты, хотя не совсем ясно, что они понимают под resize.
Для удобства, помести картинку в переменную:
Этим мы ты избавишься от необходимости выделять таблицу, для того, чтобы из выделения получить вставленную картинку.
Идея интересная. Поковыряю.
Не ясно, почему при вставке через закладку не работает (1), а при вставке в таблицу напрямую (2) - работает.
И как достучаться до рисунка, вставленного помимо таблицы?
PS Пересчитывать размер - костыль в коде 1.
Потестил.
Переменная помогла. Спасибо.
Однако, похоже в файле Word глюк.
Тестовый работает, а основной без костыля не хочет.
Добрый день. Подскажите пожалуйста как с помощью макроса не только вставить изображение из буфера, но и поменять ему обтекание на "перед текстом" и выставить определенные размеры. Часто приходится копировать картинки из интернета и вставлять в ворд. И каждый раз приходится все в ручную делать.
Макрорекордер дает записать только первое действие, вставку.
После работать не хочет. Запись включается, но с рисунком ничего сделать не могу.
Код:
Другой день бодаюсь со вставкой рисунков в Word.
В исходном файле пытаюся вставить рисунок в таблицу с 1 ячейкой содержащей закладку и установить его размеры.
wd.Bookmarks.Item(marker).Select
wa.Selection.InlineShapes.AddPicture Filename:=basep & aan, LinkToFile:= _
False, SaveWithDocument:=True
wa.Selection.Tables(1).Select
With wa.Selection.InlineShapes(1) 'Если Формат - Рисунок - Положение "в тексте"
' Heght = .Height: wigt = .Width ' костыль
.LockAspectRatio = -1 'msoTrue 'Формат - Риснок - Размер - Сохранять пропорции
.Height = 141.88 'Высота рисунка 227 = 8 см
' .Height = 100 '360 ': .Width = .Height * (wigt / Heght) ' костыль
End With
Без костыля меняется только либо высота, либо ширина. При этом ошибки нет
Сегодня создал шаблон с таблицей в 1 ячейку, написал код для вставки
For Each x In coll
.Selection.InsertRowsBelow 1
.Selection.TypeText Text:="Фото № " & x(1) & " " & x(2)
.Selection.EndKey Unit:=5, Extend:=1 ' 5 1
.Selection.ParagraphFormat.KeepWithNext = True
.Selection.InsertRowsBelow 1
.Selection.ParagraphFormat.KeepWithNext = False
.Selection.InlineShapes.AddPicture Filename:=x(3), LinkToFile:= _
False, SaveWithDocument:=True
wa.Selection.EndKey Unit:=5, Extend:=1 ' 5 1
With wa.Selection.InlineShapes(1) 'Если Формат - Рисунок - Положение "в тексте"
.LockAspectRatio = -1 ' msoTrue 'Формат - Риснок - Размер - Сохранять пропорции
.Width = 100 '454 'Ширина рисунка
End With
Next
Аналогичным кодом вставляю рисунок на лист, но вылетаю с ошибкой при изменении размера.
wd.Bookmarks.Item(marker).Select
wa.Selection.InlineShapes.AddPicture Filename:=iFulleName, LinkToFile:= _
False, SaveWithDocument:=True
With wa.Selection.InlineShapes(1) 'Если Формат - Рисунок - Положение "в тексте"
.LockAspectRatio = -1 ' msoTrue 'Формат - Риснок - Размер - Сохранять пропорции
.Width = 400 'Высота рисунка 227 = 8 см
End With
[/vba]
Подскажите, где собака порылась? И как правильно?
Обработка идет из Excel.
Другой день бодаюсь со вставкой рисунков в Word.
В исходном файле пытаюся вставить рисунок в таблицу с 1 ячейкой содержащей закладку и установить его размеры.
wd.Bookmarks.Item(marker).Select
wa.Selection.InlineShapes.AddPicture Filename:=basep & aan, LinkToFile:= _
False, SaveWithDocument:=True
wa.Selection.Tables(1).Select
With wa.Selection.InlineShapes(1) 'Если Формат - Рисунок - Положение "в тексте"
' Heght = .Height: wigt = .Width ' костыль
.LockAspectRatio = -1 'msoTrue 'Формат - Риснок - Размер - Сохранять пропорции
.Height = 141.88 'Высота рисунка 227 = 8 см
' .Height = 100 '360 ': .Width = .Height * (wigt / Heght) ' костыль
End With
Без костыля меняется только либо высота, либо ширина. При этом ошибки нет
Сегодня создал шаблон с таблицей в 1 ячейку, написал код для вставки
For Each x In coll
.Selection.InsertRowsBelow 1
.Selection.TypeText Text:="Фото № " & x(1) & " " & x(2)
.Selection.EndKey Unit:=5, Extend:=1 ' 5 1
.Selection.ParagraphFormat.KeepWithNext = True
.Selection.InsertRowsBelow 1
.Selection.ParagraphFormat.KeepWithNext = False
.Selection.InlineShapes.AddPicture Filename:=x(3), LinkToFile:= _
False, SaveWithDocument:=True
wa.Selection.EndKey Unit:=5, Extend:=1 ' 5 1
With wa.Selection.InlineShapes(1) 'Если Формат - Рисунок - Положение "в тексте"
.LockAspectRatio = -1 ' msoTrue 'Формат - Риснок - Размер - Сохранять пропорции
.Width = 100 '454 'Ширина рисунка
End With
Next
Аналогичным кодом вставляю рисунок на лист, но вылетаю с ошибкой при изменении размера.
wd.Bookmarks.Item(marker).Select
wa.Selection.InlineShapes.AddPicture Filename:=iFulleName, LinkToFile:= _
False, SaveWithDocument:=True
With wa.Selection.InlineShapes(1) 'Если Формат - Рисунок - Положение "в тексте"
.LockAspectRatio = -1 ' msoTrue 'Формат - Риснок - Размер - Сохранять пропорции
.Width = 400 'Высота рисунка 227 = 8 см
End With
[/vba]
Подскажите, где собака порылась? И как правильно?
Обработка идет из Excel. RAN
Быть или не быть, вот в чем загвоздка!
Другой день бодаюсь со вставкой рисунков в Word.
В исходном файле пытаюся вставить рисунок в таблицу с 1 ячейкой содержащей закладку и установить его размеры.
wd.Bookmarks.Item(marker).Select
wa.Selection.InlineShapes.AddPicture Filename:=basep & aan, LinkToFile:= _
False, SaveWithDocument:=True
wa.Selection.Tables(1).Select
With wa.Selection.InlineShapes(1) 'Если Формат - Рисунок - Положение "в тексте"
' Heght = .Height: wigt = .Width ' костыль
.LockAspectRatio = -1 'msoTrue 'Формат - Риснок - Размер - Сохранять пропорции
.Height = 141.88 'Высота рисунка 227 = 8 см
' .Height = 100 '360 ': .Width = .Height * (wigt / Heght) ' костыль
End With
Без костыля меняется только либо высота, либо ширина. При этом ошибки нет
Сегодня создал шаблон с таблицей в 1 ячейку, написал код для вставки
For Each x In coll
.Selection.InsertRowsBelow 1
.Selection.TypeText Text:="Фото № " & x(1) & " " & x(2)
.Selection.EndKey Unit:=5, Extend:=1 ' 5 1
.Selection.ParagraphFormat.KeepWithNext = True
.Selection.InsertRowsBelow 1
.Selection.ParagraphFormat.KeepWithNext = False
.Selection.InlineShapes.AddPicture Filename:=x(3), LinkToFile:= _
False, SaveWithDocument:=True
wa.Selection.EndKey Unit:=5, Extend:=1 ' 5 1
With wa.Selection.InlineShapes(1) 'Если Формат - Рисунок - Положение "в тексте"
.LockAspectRatio = -1 ' msoTrue 'Формат - Риснок - Размер - Сохранять пропорции
.Width = 100 '454 'Ширина рисунка
End With
Next
Аналогичным кодом вставляю рисунок на лист, но вылетаю с ошибкой при изменении размера.
wd.Bookmarks.Item(marker).Select
wa.Selection.InlineShapes.AddPicture Filename:=iFulleName, LinkToFile:= _
False, SaveWithDocument:=True
With wa.Selection.InlineShapes(1) 'Если Формат - Рисунок - Положение "в тексте"
.LockAspectRatio = -1 ' msoTrue 'Формат - Риснок - Размер - Сохранять пропорции
.Width = 400 'Высота рисунка 227 = 8 см
End With
[/vba]
Подскажите, где собака порылась? И как правильно?
Обработка идет из Excel. Автор - RAN
Дата добавления - 24.04.2014 в 19:14
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]
Но, отступ слева всегда будет одинаковым, а вот сверху не всегда (строк в таблице может быть как больше так и меньше). Как сделать этот параметр динамическим?
Общий вопрос: как вставить картинку между блоками "Руководитель проекта" и "Петров И.И."
Возникла задача программно заменить существующее изображение в ячейке
Само изображение является объектом Shape.
Вариант 1.
Удаление изображения и на его место вставка нового с теми же параметрами выравнивания и т.п. Вопросов нет.
Но хотелось бы
Вариант 2.
Замена картинки в существующий shape.
Через интерфейс Excel это просто "Изменить рисунок..".
Запись макроса ничего не дает.
Изучение свойств создаваемого shape не дало наводки..
Что за код соответствует "Изменить рисунок.."
Dim r_labirint as range
Dim shp
set r_labitint = Range("A1:J10")
With r_labirint.Cells(1, 1)
On Error Resume Next
Set shp = .Worksheet.Shapes.AddPicture(ActiveWorkbook.Path + "\wall.jpg", False, True, .Left, .Top, .Width, .Height)
shp.Name = "Wall" + Str(1)
End With
' Далее необходимо в объекте shp заменить картинку на ActiveWorkbook.Path + "\wall2.jpg"
Возникла задача программно заменить существующее изображение в ячейке
Само изображение является объектом Shape.
Вариант 1.
Удаление изображения и на его место вставка нового с теми же параметрами выравнивания и т.п. Вопросов нет.
Но хотелось бы
Вариант 2.
Замена картинки в существующий shape.
Через интерфейс Excel это просто "Изменить рисунок..".
Запись макроса ничего не дает.
Изучение свойств создаваемого shape не дало наводки..
Что за код соответствует "Изменить рисунок.."
Dim r_labirint as range
Dim shp
set r_labitint = Range("A1:J10")
With r_labirint.Cells(1, 1)
On Error Resume Next
Set shp = .Worksheet.Shapes.AddPicture(ActiveWorkbook.Path + "\wall.jpg", False, True, .Left, .Top, .Width, .Height)
shp.Name = "Wall" + Str(1)
End With
' Далее необходимо в объекте shp заменить картинку на ActiveWorkbook.Path + "\wall2.jpg"
Возникла задача программно заменить существующее изображение в ячейке
Само изображение является объектом Shape.
Вариант 1.
Удаление изображения и на его место вставка нового с теми же параметрами выравнивания и т.п. Вопросов нет.
Но хотелось бы
Вариант 2.
Замена картинки в существующий shape.
Через интерфейс Excel это просто "Изменить рисунок..".
Запись макроса ничего не дает.
Изучение свойств создаваемого shape не дало наводки..
Что за код соответствует "Изменить рисунок.."
Dim r_labirint as range
Dim shp
set r_labitint = Range("A1:J10")
With r_labirint.Cells(1, 1)
On Error Resume Next
Set shp = .Worksheet.Shapes.AddPicture(ActiveWorkbook.Path + "\wall.jpg", False, True, .Left, .Top, .Width, .Height)
shp.Name = "Wall" + Str(1)
End With
' Далее необходимо в объекте shp заменить картинку на ActiveWorkbook.Path + "\wall2.jpg"
pa_mfc1186, почитайте про option explicit - это поможет в будущем избежать подобных опечаток. JayBhagavan
покопался в свойствах shape - тоже не нашел ссылок или путей.
А зачем менять именно в shape? вы присваиваете shap`у имя, если нужно по этому имени ищете адрес ячейки с изображением и работаете уже с ячейкой - удалить, вставить.
покопался в свойствах shape - тоже не нашел ссылок или путей.
А зачем менять именно в shape? вы присваиваете shap`у имя, если нужно по этому имени ищете адрес ячейки с изображением и работаете уже с ячейкой - удалить, вставить. excelhelprus
excelhelprus, Да, имя у shape есть и удалить, вставить - это первый вариант. Но пытливый ум хочет знать: если в контекстном меню есть "Изменить рисунок. ", то значит можно это сделать программно. К тому же, как я полагаю, изменить как минимум на одно действие меньше, чем удалить+вставить.
excelhelprus, Да, имя у shape есть и удалить, вставить - это первый вариант. Но пытливый ум хочет знать: если в контекстном меню есть "Изменить рисунок. ", то значит можно это сделать программно. К тому же, как я полагаю, изменить как минимум на одно действие меньше, чем удалить+вставить. pa_mfc
Sub ertert()
With Range("A1")
.Parent.Shapes.AddShape(msoShapeRoundedRectangle, .Left, .Top, .Width, .Height).Name = "Wall1"
With .Parent.Shapes("Wall1")
.Fill.UserPicture ThisWorkbook.Path & "\wall.jpg"
MsgBox "wall.jpg"
.Fill.UserPicture ThisWorkbook.Path & "\ACDSee Classic.jpg"
MsgBox "ACDSee Classic.jpg"
.Fill.UserPicture ThisWorkbook.Path & "\Ad Aware SE.jpg"
MsgBox "Ad Aware SE"
End With
End With
End Sub
Sub ertert22()
With Range("A1")
With .Parent.Shapes.AddShape(msoShapeRoundedRectangle, .Left, .Top, .Width, .Height)
.Name = "Wall1"
.Fill.UserPicture ThisWorkbook.Path & "\wall.jpg"
MsgBox "wall.jpg"
.Fill.UserPicture ThisWorkbook.Path & "\ACDSee Classic.jpg"
MsgBox "ACDSee Classic.jpg"
.Fill.UserPicture ThisWorkbook.Path & "\Ad Aware SE.jpg"
MsgBox "Ad Aware SE"
End With
End With
End Sub
Sub ertert()
With Range("A1")
.Parent.Shapes.AddShape(msoShapeRoundedRectangle, .Left, .Top, .Width, .Height).Name = "Wall1"
With .Parent.Shapes("Wall1")
.Fill.UserPicture ThisWorkbook.Path & "\wall.jpg"
MsgBox "wall.jpg"
.Fill.UserPicture ThisWorkbook.Path & "\ACDSee Classic.jpg"
MsgBox "ACDSee Classic.jpg"
.Fill.UserPicture ThisWorkbook.Path & "\Ad Aware SE.jpg"
MsgBox "Ad Aware SE"
End With
End With
End Sub
Sub ertert22()
With Range("A1")
With .Parent.Shapes.AddShape(msoShapeRoundedRectangle, .Left, .Top, .Width, .Height)
.Name = "Wall1"
.Fill.UserPicture ThisWorkbook.Path & "\wall.jpg"
MsgBox "wall.jpg"
.Fill.UserPicture ThisWorkbook.Path & "\ACDSee Classic.jpg"
MsgBox "ACDSee Classic.jpg"
.Fill.UserPicture ThisWorkbook.Path & "\Ad Aware SE.jpg"
MsgBox "Ad Aware SE"
End With
End With
End Sub
Sub ertert()
With Range("A1")
.Parent.Shapes.AddShape(msoShapeRoundedRectangle, .Left, .Top, .Width, .Height).Name = "Wall1"
With .Parent.Shapes("Wall1")
.Fill.UserPicture ThisWorkbook.Path & "\wall.jpg"
MsgBox "wall.jpg"
.Fill.UserPicture ThisWorkbook.Path & "\ACDSee Classic.jpg"
MsgBox "ACDSee Classic.jpg"
.Fill.UserPicture ThisWorkbook.Path & "\Ad Aware SE.jpg"
MsgBox "Ad Aware SE"
End With
End With
End Sub
Sub ertert22()
With Range("A1")
With .Parent.Shapes.AddShape(msoShapeRoundedRectangle, .Left, .Top, .Width, .Height)
.Name = "Wall1"
.Fill.UserPicture ThisWorkbook.Path & "\wall.jpg"
MsgBox "wall.jpg"
.Fill.UserPicture ThisWorkbook.Path & "\ACDSee Classic.jpg"
MsgBox "ACDSee Classic.jpg"
.Fill.UserPicture ThisWorkbook.Path & "\Ad Aware SE.jpg"
MsgBox "Ad Aware SE"
End With
End With
End Sub
Читайте также: