按页面拆分文件,包括背景

问题描述 投票:0回答:1

tl;dr 有没有一种有效的方法使用 VBA 将多页 Visio 文件拆分为每个前台页面的不同文件并包括背景页面?

这个问题的简单版本(不包括背景页面)多年来已被问过多次,每次的答案都是使用Paul Heber 的 Visio Super Utilities。我确信这个工具很棒,但不幸的是由于公司限制我无法使用它。

我有一个大约 200 页的文件,所有页面都使用相同的背景模板来轻松修改常见元素。加载整个文件对于日常使用来说很麻烦,并且单个用户只需要其中的几个页面。为了方便和安全,我想将其分成单独的文件。

我为此想出了两种方法。我无法在家用计算机上访问 Visio,因此我仅解释一下流程:

  1. 设置

    UndoScope
    删除除我感兴趣的页面之外的所有页面。保存,然后撤消操作并重复。这意味着将有 200 左右的页面撤消操作重复 200 次左右。我还没有做过任何测试,但我敢打赌这是一场性能噩梦并且容易出错。

  2. 打开 Visio 的新实例并将各个页面复制到其中。循环浏览页面一次以找到背景(如果未知),将其传输。再次循环传输每个前景,另存为新文件,然后删除该页面。这看起来更好,但需要一种传输页面的方法。我不知道有什么简单的方法可以在保留图层/保护设置的同时做到这一点。

我希望有一些我不知道的第三种高效解决方案。在完美的世界中,它会包含在

Document.SaveAsEx
中。在一个不太完美的世界中,这将是我可以设置的某种
Page.ExcludeDuringSave
标志。如有任何帮助/建议,我们将不胜感激。

vba visio
1个回答
0
投票

我刚刚为此构建了一个完全在线的解决方案:)它通过删除额外的不相关页面,在浏览器中的 XML 级别上拆分 Visio 文件(即无需安装 Visio 即可工作)。

这里:https://webtools.unmanagementvisio.com/splitpages

欢迎您尝试一下,并向我发送任何反馈。文件的大小可能是一个问题,也可能不是。我尝试过 2Mb 文件,看起来不错。另外,我还没有检查如果一个页面上的形状公式引用另一页面会发生什么,这些公式很可能会被破坏(#ref)

解决方案完全开源

© www.soinside.com 2019 - 2024. All rights reserved.