Excel 分割包括背景的文件

Excel 分割包括背景的文件

问题描述

简而言之,是否有使用VBA高效地将多页Visio文件分割成不同的文件,每个前景页都包括一个背景页?

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

我有一个包含约200页的文件,所有页面都使用相同的背景模板以便轻松修改共同元素。对于日常使用来说,加载整个文件非常不便,并且只有少数页面是某个用户需要的。为了方便和安全起见,我想将它分割成单独的文件。

我想出了两种方法。由于家里没有Visio,我无法测试,所以只能解释一下流程:

  1. 设置一个UndoScope,删除除了我感兴趣的页面之外的所有页面。保存,然后撤消操作并重复。这意味着将会重复执行大约200个页面的撤消操作,大概重复200次。我还没有做过任何测试,但我敢打赌这是一个性能噩梦,并且容易出错。

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

我希望有一种我不知道的第三种高效的解决方案。在完美的世界中,它将包含在Document.SaveAsEx中。在不太完美的世界中,它将是一种我可以设置的Page.ExcludeDuringSave标志。感谢任何帮助和建议。

解决方案

我刚刚为此创建了一个完全在线的解决方案,只是为了好玩 🙂 它在浏览器中在XML级别上分割Visio文件(即在没有安装Visio的情况下工作),通过删除多余的无关页面。

在这里:https://webtools.unmanagedvisio.com/splitpages

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

该解决方案是完全开源的,详情请看:https://github.com/nbelyh/VisioWebTools/blob/master/azure_function/SplitPages.cs

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程