Word VBA:ConvertToShape方法使图像消失

时间:2016-10-07 12:51:07

标签: vba ms-word word-vba

我为一台客户端编写了一些代码,这些代码在他的机器上运行不正常(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。

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

Microsoft Community

交叉发布的答案

有一种方法可以只使用内嵌形状,通过设置表格来定位左侧的文本和右侧的图片。此方法的另一个优点是,如果将表的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