2014-01-20 51 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

相關問題