我在开发一程序(VC),会调用WORD来进行盖章等操作。 插入图片的代码(这里简便起见用VBA代码)是
set inlineA=Selection.InlineShapes.addpicture("c:\123.bmp",false,true)
这里默认插入的是嵌入型,不过因后面有其他操作,需将其变为shape
inlineA.select
inlineA.ConvertToShape
转化成shape后,我发现再不能将其恢复成嵌入型了,wrapformat 和 Zorder都有设置,不过没用。
 本想通过录制宏的办法来分析,不过发现录制时,没有办法改掉图片的环绕方式为嵌入型(变灰)
哪位可以帮忙,多谢!!!

解决方案 »

  1.   

    居然没人理我,唔唔...小弟实在没招了,只得用上最笨的办法,Inlineshape 转化为Shape进行相关操作后,再将其删除,再在原地再插入相同图片,这样就可以保证图片是嵌入型. 问题是解决了,不过我相信应该有更好的办法,哪位大侠能有其他的想法?
      

  2.   

    看了一下sharp对象之后有个结论你调不回来是有道理的代表一个图形层对象,例如自选图形、任意多边形、OLE 对象、ActiveX 控件、图片等。Shape 对象是 Shapes 集合的一个成员,该集合包含了一篇文档正文部分的所有图形,或文档页眉和页脚部分中的所有图形。一个图形总是附属于某一带锁定标记的区域。可将图形放于锁定标记所在的页面的任何位置。注意   有三种对象可代表图形:Shapes 集合代表了文档中的所有图形;ShapeRange 集合代表了文档全部图形的一个指定子集(例如,ShapeRange 对象可以代表文档中的第一个和第四个图形,也可代表文档中所有选定的图形);Shape 对象代表文档中的单个图形。如果需要对几个图形(或选定部分中的多个图形)同时进行操作,可以使用 ShapeRange 集合。使用 Shape 对象
    本节说明应如何: 根据名称或编号返回文档中的一个原有图形。 
    返回所选部分中的一个或多个图形。 
    返回一个新创建的图形。 
    返回一组中的单个图形。 
    返回新近组合的一组图形。 
    返回文档中的一个原有图形
    用 Shapes(index) 可返回单独的 Shape 对象,其中 index 为该对象的名称或索引序号。下例水平翻转活动文档中的第一个图形。ActiveDocument.Shapes(1).Flip msoFlipHorizontal
    下例水平翻转活动文档中名为“Rectangle 1”的图形。ActiveDocument.Shapes("Rectangle 1").Flip msoFlipHorizontal
    每个图形在创建时都得到一个默认的名称。如果向文档中添加三个不同的图形,它们将得到如“矩形 2”、“文本框 3”和“椭圆 4”之类的名称。若要给图形起一个更有意义的名称,请设置其 Name 属性。返回选定部分中的一个或多个图形
    用 Selection.ShapeRange(index) 可返回一个 Shape 对象,该对象代表选定部分中的一个图形,其中 index 为图形名称或索引序号。下例设置选定部分中第一个图形的填充效果(假定在选定部分中至少有一个图形)。Selection.ShapeRange(1).Fill.ForeColor.RGB = RGB(255, 0, 0)
    下例为选定部分中所有图形设置填充效果(假定选定部分至少包含一个图形)。Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
    返回一个新创建的图形
    如果要向指定文档的图形集合添加一个 Shape 对象,并返回一个代表新创建的图形 Shape 对象,请使用 Shapes 集合的下列方法之一:AddCallout、AddCurve、AddLabel、AddLine、AddOleControl、AddOleObject、AddPolyline、AddShape、AddTextbox、AddTextEffect 或 BuildFreeForm。下例将一个矩形添加到活动文档。ActiveDocument.Shapes.AddShape msoShapeRectangle, 50, 50, 100, 200
    返回组合中的单个图形
    用 GroupItems(index) 可以返回 Shape 对象,该对象代表组合中的单个图形,其中 index 为图形在该组中的名称或索引序号。返回新近组合的一组图形
    用 Group 或 Regroup 方法可对某一区域的图形加以组合,并返回单独的 Shape 对象,该对象代表该新组合。在一个组合形成之后,处理该组合的方式与处理其他图形的方式相同。锁定和放置图形
    每个 Shape 对象都锁定于某一区域的文本。一个图形位置锁定于包含锁定标记的区域的第一段的开始处。该图形总是与其锁定标记处于同一页上。将 ShowObjectAnchors 属性设置为 True,就可看到锁定标记。该图形的 Top 和 Left 属性确定图形的垂直和水平位置。该图形的 RelativeHorizontalPosition 和 RelativeVerticalPosition 属性确定图形的定位依据:可以是锁定标记所在的段落、包含该段落所在的栏、页边距或页面边缘。如果图形的 LockAnchor 属性为 True,则不能在页面上拖动锁定标记。设置图形的格式
    用 Fill 属性可返回一个 FillFormat 对象,该对象包含了设置封闭图形填充效果所需的所有属性和方法。用 Shadow 属性可返回 ShadowFormat 对象,该对象可用来设置阴影。用 Line 属性可返回 LineFormat 对象,该对象包含了设置线条和箭头效果所需的各种属性和方法。用 TextEffect 属性可返回 TextEffectFormat 对象,该对象可用来设置“艺术字”的格式。用 Callout 属性可返回 CalloutFormat 对象,该对象可用来设置线型标注的格式。用 WrapFormat 属性可返回 WrapFormat 对象,该对象可用来定义文字环绕图形的方式。用 ThreeD 属性可返回 ThreeDFormat 对象,该对象可用来创建三维图形。用 PickUp 和 Apply 方法可将一个图形的格式传递给(即应用于)另一个图形。用 Shape 对象的 SetShapesDefaultProperties 方法可设置文档的默认图形格式。新的图形可继承默认图形的多种属性。图形的其他重要属性
    用 Type 属性可指定图形的类型,例如任意多边形、自选图形、OLE 对象、标注或链接图片。用 AutoShapeType 属性可以指定自选图形的类型,例如椭圆、矩形或气球形。用 Width 和 Height 属性可指定图形尺寸。TextFrame 属性返回 TextFrame 对象,该对象包含了将文本附加于图形以及链接文本框之间的文本所需的所有属性和方法。
    被锁定了,没有办法的事情,这个是ms的要求的说
      

  3.   

    看来笨方法还是得用,感谢liuxiaoyi666
      

  4.   

    现在有了新的问题,就是我的公章下还有一TextFrame,内容是日期。 如果只插入一次还好,很正常,但如果插入多余两次,TextFrame的位置就会不对,得手工拖动。代码是这样的:
    set shapeA=inlineA.ConvertToShape
    leftA=shapeA.left
    topA=shapeA.top+shapeA.height-50
    set shape=ActiveDocument.shapes.AddTextFrame(1,leftA+30,topA,160,48)有解决方法吗?