指定形状的类型或形状范围。



名称





说明



msoAutoShape



1



自选图形。



msoCallout



2



标注。



msoCanvas



20



画布。



msoChart



3



图。



msoComment



4



批注。



msoDiagram



21



图表。



msoEmbeddedOLEObject



7



嵌入的 OLE 对象。



msoFormControl



8



窗体控件。



msoFreeform



5



任意多边形。



msoGroup



6



组合。



msoIgxGraphic



24



SmartArt 图形



msoInk



22



墨迹。



msoInkComment



23



墨迹批注。



msoLine



9



线条。



msoLinkedOLEObject



10



链接 OLE 对象。



msoLinkedPicture



11



链接图片。



msoMedia



16



媒体。



msoOLEControlObject



12



OLE 控件对象。



msoPicture



13



图片。



msoPlaceholder



14



占位符。



msoScriptAnchor



18



脚本定位标记。



msoShapeTypeMixed



-2



混和形状类型。



msoTable



19



表。



msoTextBox



17



文本框。



msoTextEffect



15



文本效果。


 

 

InlineShape表示的类型其实不只是图片,还包括OLE, ACTIVE X等。 

下面是MSDN中的定义:Represents an object in the text layer of a document(表示文档中文本层的一个对象)。 

可以通过InlineShape的Type属性获得这个对象的具体类型。Type是一个WdInlineShapeType的枚举类型。WdInlineShapeType可以说下面的常数之一: 

wdInlineShapeEmbeddedOLEObject  嵌入式OLE对象 

wdInlineShapeHorizontalLine              水平线 

wdInlineShapeLinkedOLEObject         链接式OLE对象 

wdInlineShapeLinkedPicture               链接式图片 

wdInlineShapeLinkedPictureHorizontalLine(…) 

wdInlineShapeOLEControlObject        OLE控制对象 

wdInlineShapeOWSAnchor                OWS锚点 

wdInlineShapePicture                         嵌入式图片 

wdInlineShapePictureBullet                 图片占位符 

wdInlineShapePictureHorizontalLine    (…) 

wdInlineShapeScriptAnchor          (…) 

设置图片的“版式”为嵌入式那么这个图片在WORD文档中就用InlineShape来表示,而Shape表示的图片格式是其他的版式,处于Drawing层。不过其他的特性基本上是一致的。 

  

下面是要用到的一些变量:(初始化部分没有写) 

ApplicationClass wordApp; 

Document wordDoc; 

object missing; 

List<InlineShape> allShape;    //用InlineShape类型保存图片 

List<Image> allImage;          //用Image类型保存图片 

  

先来看看提取InlineShape的步骤: 

1.返回当前文档中所有InlineShapes。如果是嵌入式图片就加入集合中。 

InlineShapes insh = le="COLOR: black">wordDoc.InlineShapes; 

for (int i = 0; i < insh.Count; i++) 

if (insh[i].Type == WdInlineShapeType.wdInlineShapePicture) 

allShape.Add(insh[i]); 

2.先选中一个图片,再通过Selection发送到剪贴板,再从剪贴板得到一个图片对象。 

Microsoft.Office.Interop.Word.Selection sel; 

System.Drawing.Image returnImage = null; 

foreach (InlineShape ins in allShape) 

ins.Select(); 

sel = wordApp.Selection; 

if (sel.Type == WdSelectionType.wdSelectionInlineShape) 

sel.CopyAsPicture(); 

if (Clipboard.ContainsImage()) 

returnImage = Clipboard.GetImage(); 

allImage.Add(returnImage); 

  

下面是保存图片到文件中,Image类型的Save方法可以完成这个工作。文件类型可以说JPG,GIF,BMP等。 

int i = 0; 

foreach (Image im in allImage) 

im.Save("c://图片" + i.ToString() + ".jpg",ImageFormat.Jpeg); 

i++;