【问题标题】:Visio 2013 - Getting C# to work as Macros? [closed]Visio 2013 - 让 C# 作为宏工作? [关闭]
【发布时间】:2014-02-09 20:34:15
【问题描述】:

我正在尝试使用 Visio 2013 SDK (Visio 2013 SDK) 打开 Visio 2013 文档并按顺序迭代流程图对象,之后将实施自定义代码以将流程图对象中的值写入一个文本文件。目标是能够使用 C# 而不是 Visio 中的内置 VBA 宏来完成所有这些工作。这可能吗?如果可以,是否有可用的入口点代码示例?

【问题讨论】:

    标签: c# vba sdk visual-studio-2013 visio


    【解决方案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

    【讨论】:

    • 谢谢,我需要的三行是打开文档的那一行,一旦你发布了我的代码为什么不起作用,我意识到它正在向程序传递一个页面,导致我出现这样的问题头痛。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 2012-09-15
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多