3

我通过导入数据创建了 300 多页的 Visio 绘图以创建 300 多个“组织结构图”。

我说“组织结构图”,因为它们实际上是将 Crystal Report 绘制为“CEO”,并将其数据源表和字段绘制为“员工”。

我现在有一个包含 300 多页的巨大 Visio 文件,每一页都是一个报表及其数据源。但我的目标是获得 300 多个单独的文档,每个文档都以适当的方式命名。使用 vba 我可以根据需要重命名每个页面或从页面获取所需的名称。

理想情况下,我想要 pdf 文件,而不是 visio 文件,但在紧要关头会这样做,最后一个可取的是 jpg/gif。

我试过了:

  • 将每个页面导出/保存为 jpg/gif/html 但出现 920 错误.. 在详尽搜索如何修改每个页面的分辨率以避免 920 错误后,我完全被难住了,我的意思是需要什么“完美”分辨率?可用的文档非常模糊。

    Sub ExportPagesAsFiles()
    
    Dim PagsObj As Visio.Pages
    Dim PagObj As Visio.Page
    Dim ExportName As String
     Dim ExportPath As String
    
    Set PagsObj = ActiveDocument.Pages
    
    'Open "C:\temp\exportLog.txt" For Output Shared As #1
    
     For Each PagObj In PagsObj
        ExportPath = "c:\Report_Visio\"
         ExportName = ExportPath & PagObj.Name & ".jpg"
        ' ".gif"
        ' ".wmf"
         ' ".html"
        'Print #1, ExportName
        PagObj.Export ExportName
    
    Next PagObj
    
    'Close #1
    
    End Sub
    
  • 打印到 pdf 打印机但点击 pdf 软件对话框 (CutePDF)。我没有修改系统注册表的管理员权限,而且我在 Windows 7 机器上,并且 sendkeys 是非法的。

  • vba 创建新文档,将页面绘图复制/粘贴到其中,命名新文档,用名称保存。但是一些 Visio 怪癖只复制粘贴页面对象,而不是它们后面的标题和数据,因此它们是空白形状。详尽搜索后,我不清楚复制整个页面内容。

  • vba 以第一页的名称保存 300 多个文档的副本,然后删除其余页面。第二次打开原始页面,保存为第二页,然后删除其余页面,重复300+次。我在大约 10 页和 3 小时后退出了这个。

似乎每条可能的解决方案路径都会遇到陷阱、沼泽、悬崖......

作为一般说明,Internet 上提供的 Visio 信息要么非常简陋,要么技术晦涩难懂。对于任何其他 Office 产品,论坛等中有大量信息、示例等。但 Visio 是它的蟋蟀。

所以想知道是否有任何 Visio 开发人员可以帮助我选择和导航这些解决方案路径!

谢谢。

编辑添加:我正在使用 Visio Standard 2003 版本编辑添加 Visio 导出到使用的文件代码

4

2 回答 2

2

您可以尝试使用PDFCreator(它的开源)。

它是一个虚拟打印机,可以打印成 PDF、JPG、BMP、PNG(对图表非常有用)和许多其他格式。

它具有自动保存选项、可配置的文件名,并且可以将打印的文档页面保存为单独的文件。

配置虚拟打印机的应用程序的一些屏幕截图(这是 PDFCreator 0.9.6)。

将每一页打印到单独的文件中

将每一页打印到单独的文件中

自动保存选项:

在此处输入图像描述

于 2013-01-07T20:54:15.233 回答
1

我决定采取不同的方法。

我使用 VBA 和 Access 分别创建每个 Visio 页面,而不是创建 300 多页的 Visio 文档。Visio 的组织结构图导入数据向导功能强大,但正如我在上面概述的那样,让一个选项卡在了导出单个页面的选项上。

因此,在 Access 中,我遍历了 300 多个报表记录,一次选择每个报表的数据,为该报表创建 Visio 绘图,将 Visio 文件命名为报表名称,然后保存并关闭它。

然后我得到了 300 多个 Visio 文件,每个文件都显示了报表的数据源表和字段。够好了。

使用 VBA 从数据“orgwiz”创建图表 http://office.microsoft.com/en-ca/visio-help/make-visio-organization-charts-from-personnel-files-HA001077464.aspx

代码是

    Set objVisio = CreateObject("Visio.Application")
    Set objAddOn = objVisio.Addons.ItemU("OrgCWiz")

    strCommand = "/DATASOURCE=c:\temp\MyDatabase.mdb, " _
    & " TABLE=MyVisioDataSource, " _
    & " DBQUALIFIER=Microsoft.Jet.OLEDB.4.0 " _
    & " /NAME-FIELD=Data_Object_Name " _
    & " /UNIQUEID-FIELD=Data_Object_ID " _
    & " /MANAGER-FIELD=Data_Object_Parent_ID " _
    & " /DISPLAY-FIELDS=" & strDisplayFields _
    & " /CUSTOM-PROPERTY-FIELDS=" & strPropertyFields _
    & " /SYNC-ACROSS-PAGES " _
    & " /HYPERLINK-ACROSS-PAGES " _
    & " /SHAPE-FIELD=MASTER_SHAPE " _
    & " /PAGES=" & strReportName

    objAddOn.Run ("/S-INIT")

    Dim cmdArray, i
    cmdArray = Split(strCommand, "/")
    For i = LBound(cmdArray) To UBound(cmdArray)
    objAddOn.Run ("/S-ARGSTR /" + cmdArray(i))
    Next

    objAddOn.Run ("/S-RUN ")
于 2013-01-07T23:35:04.297 回答