我试图使用Visio2013SDK (Visio 2013 SDK)按顺序打开Visio2013文档并依次遍历流程图对象,之后将实现自定义代码,以便将流程图对象的值写入文本文件。目标是能够使用C#来完成所有这些工作,而不是在Visio中内置VBA宏。这是可能的吗?如果有,是否有任何可用的入口点代码示例?
发布于 2014-01-20 18:33:21
在VBA中所能做的,也可以在C#中完成(当然,采用语法)。这意味着,VBA和C#同样可以访问Visio对象模型。至于代码示例,您所说的“按顺序迭代”是什么意思还不太清楚。例如,如果图表上的形状形成一个循环,您会做什么?它没有起点,也没有终点。还是一棵树?
尽管如此,您可以很容易地分别枚举所有形状和所有连接:
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();
}
}
}看看这些线程:
读取visio与流程图中其他形状的连接的C#代码
注意,要简单地将值从形状写入文本文件,可以在“查看”选项卡上使用“形状报告”按钮。请参阅Visio中有关“形状报告”的更多信息:
http://www.youtube.com/watch?v=Lm1ZrkPpI1U
https://stackoverflow.com/questions/21237970
复制相似问题