【发布时间】:2014-02-09 20:34:15
【问题描述】:
我正在尝试使用 Visio 2013 SDK (Visio 2013 SDK) 打开 Visio 2013 文档并按顺序迭代流程图对象,之后将实施自定义代码以将流程图对象中的值写入一个文本文件。目标是能够使用 C# 而不是 Visio 中的内置 VBA 宏来完成所有这些工作。这可能吗?如果可以,是否有可用的入口点代码示例?
【问题讨论】:
标签: c# vba sdk visual-studio-2013 visio
我正在尝试使用 Visio 2013 SDK (Visio 2013 SDK) 打开 Visio 2013 文档并按顺序迭代流程图对象,之后将实施自定义代码以将流程图对象中的值写入一个文本文件。目标是能够使用 C# 而不是 Visio 中的内置 VBA 宏来完成所有这些工作。这可能吗?如果可以,是否有可用的入口点代码示例?
【问题讨论】:
标签: c# vba sdk visual-studio-2013 visio
你可以在 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 中的“形状报告”:
【讨论】: