从word宏转换为C#如果varObj.Type = msoEmbeddedOLEObject那么

问题描述 投票:0回答:1

试图将下面的宏转换为C#:

For Each varObj In ActiveDocument.Shapes
  If varObj.Type = msoEmbeddedOLEObject Then
    n = n + 1
  End If
Next varObj

我尝试过但不编译的内容:

foreach (Word.Shapes tempLoopVar_varObj in winword.ActiveDocument.Shapes)
{
  if (tempLoopVar_varObj.Type == ord.WdInlineShapeType.msoEmbeddedOLEObject)
  {
   fileCount++;
  }
}
c# macos office-interop
1个回答
0
投票

winword.ActiveDocument.Shapes实际上返回了具有Word.Shape类型的底层对象的迭代器。试试这样:

foreach (Word.Shape tempLoopVar_varObj in winword.ActiveDocument.Shapes)
{
...
}

注意:word-iterop dll中的迭代器/集合不是通用的,但它们的名称遵循一个共同的模式。当您迭代Word.Shapes时,底层对象与集合类型相同,但在单数命名 - > Word.Shape中。

© www.soinside.com 2019 - 2024. All rights reserved.