2014-01-20 37 views
2

我想打开一个Visio 2013文档,并使用Visio 2013 SDK(Visio 2013 SDK)按顺序遍历流程图对象,之后将实现自定义代码以将流程图对象中的值写入文本文件。我们的目标是能够使用C#而不是使用Visio内置的VBA宏来执行所有这些操作。这是否可能,如果有的话是否有任何入口点代码样本可用?Visio 2013 - 让C#能够像宏一样工作?

回答

1

在VBA中你可以做的所有事情都可以在C#中完成(通过采用当然的语法)。意思是,Visio对象模型同样可以从VBA和C#访问。至于代码示例,“顺序迭代”的含义并不十分清楚。例如,如果图上的形状形成一个循环,你会怎么做?它没有开始也没有结束。或者是一棵树?

虽然,你可以比较容易地枚举所有的形状和单独所有连接:

using System; 
using Visio = Microsoft.Office.Interop.Visio; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var app = new Visio.Application(); 
      var doc = app.Documents.Open(args[0]); 

      var page = doc.Pages[1]; 

      foreach (Visio.Shape shp in page.Shapes) 
       Console.WriteLine("shape #{0}: text: '{1}'", shp.ID, shp.Text); 

      foreach (Visio.Connect conn in page.Connects) 
       Console.WriteLine("connector: #{0} -> #{1}", conn.FromSheet.ID, conn.ToSheet.ID); 

      app.Quit(); 
     } 
    } 
} 

在这些线程看看:

C# code to read visio shape's connectivity with other shapes in a flow chart

Traverse through every possible path in a Visio Flow-Chart with C#

注意,简单地将形状值写入文本文件,您可以使用“查看”选项卡上的“形状报告”按钮。查看更多有关“形报告”在Visio:

http://www.youtube.com/watch?v=Lm1ZrkPpI1U

+0

谢谢三行我需要的是打开文档的那些,我意识到,一旦你发帖说为什么我的代码是不工作有人路过该程序是一个让我头痛的页面。 – user3215564

相关问题