我为一台客户端编写了一些代码,这些代码在他的机器上运行不正常(Win 10,Office 365)但是在我的机器上(Win 10,Office 2016)。代码将图像插入标题然后定位并调整大小。我使用ConvertToShape方法,因此我可以访问Shape类的宽度,高度和位置等属性。
Dim pic As Shape
Dim shp As Word.InlineShape
Set shp = thisDocument.Sections.Item(1).Headers(wdHeaderFooterPrimary).Range.InlineShapes.AddPicture(fpImage) ' insert the image to the header
Set pic = shp.ConvertToShape ' THIS LINE CAUSES THE PROBLEM
该方法会导致图像消失。 'Pic'仍然可用,设置它的属性不会导致错误,但它不可见。它的.visible属性返回true。
有什么想法吗?感谢。
答案 0 :(得分:1)
有一种方法可以只使用内嵌形状,通过设置表格来定位左侧的文本和右侧的图片。此方法的另一个优点是,如果将表的AutoFitBehavior属性设置为wdAutoFitFixed并将列宽设置为所需的形状宽度,Word将自动将图片大小调整为该宽度并保持宽高比。
这是一个小样本宏:
Sub x()
Dim fpImage As String
Dim strExistingHeaderText
Dim tbl As Table
Dim shp As InlineShape
fpImage = "D:\Pictures\bunnycakes.jpg"
With ActiveDocument
strExistingHeaderText = _
.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text
Set tbl = .Tables.Add( _
Range:=.Sections(1).Headers(wdHeaderFooterPrimary).Range, _
numrows:=1, numcolumns:=2, _
AutoFitBehavior:=wdAutoFitFixed)
tbl.Columns(2).Width = InchesToPoints(1.5)
tbl.Columns(1).Width = InchesToPoints(5#)
tbl.Cell(1, 1).Range.Text = strExistingHeaderText
'tbl.Borders.Enable = False
Set shp = tbl.Cell(1, 2).Range.InlineShapes.AddPicture(fpImage)
End With
End Sub