ActiveX Image Word выбрать из Excel?
Я хочу скопировать изображение в элемент управления изображения ActiveX в слове.
Я думал, что это можно сделать через.InlineShapes(индекс), но у меня есть только имя элемента управления..
Private Sub CommandButton13_Click()
Dim intNoOfRows
Dim intNoOfColumns
Dim objWord
Dim objDoc
Dim objRange
Dim objTable
Dim s As Word.InlineShape
Dim shp As Shape
intNoOfRows = 4
intNoOfColumns = 2
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add
Set objRange = objDoc.Range
objDoc.Tables.Add objRange, intNoOfRows, intNoOfColumns
Set objTable = objDoc.Tables(1)
objTable.Borders.Enable = True
objTable.Cell(1, 1).Range.InlineShapes.AddPicture UserForm1.txtImageLogo
objTable.Cell(1, 2).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
objTable.Cell(1, 2).Range.InlineShapes.AddPicture UserForm1.txtImageLogoClient
objTable.Cell(2, 1).Merge MergeTo:=objTable.Cell(2, 2)
objTable.Cell(2, 1).Height = 520
With objWord
Set s = objTable.Cell(2, 1).Range.InlineShapes.AddPicture(UserForm1.txtImageBackground)
s.Height = 510
s.Width = 460
End With
objTable.Cell(3, 1).Merge MergeTo:=objTable.Cell(3, 2)
objTable.Cell(3, 1).Range.Text = "Prepared by:" & " " & UserForm1.txtPrepared
objTable.Cell(4, 1).Merge MergeTo:=objTable.Cell(4, 2)
objTable.Cell(4, 1).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
objTable.Cell(4, 1).Range.Text = "Belgrade," & " " & Format(Date, "MMMM DD, YYYY ")
Set objTable = Nothing
End Sub
Итак, мне удалось вставить таблицу в слово, все в порядке, но мне просто нужно поместить backgroundImage позади текста.
Спасибо!
1 ответ
Предполагая, что это элемент управления Image в Developer/Controls/Legacy Tools/ActiveX:
Dim ax As MsForms.Image
Set ax = ActiveDocument.InlineShapes(1).OLEFormat.Object
ax.Picture = LoadPicture("C:\Users\Public\Pictures\Sample Pictures\Koala.jpg")
Вам необходимо получить доступ к OLEFormat.Object объекта InlineShape, чтобы обратиться к его общедоступным свойствам и методам COM. Устаревшие элементы управления ActiveX на самом деле являются элементами управления пользовательской формы, поэтому, если вы объявите их с использованием строгой типизации, вы получите Intellisense. Вы также можете затемнить как объект, но тогда нет Intellisense.