Visio 300+页面,拆分为300多个单独的文档,或打印到pdf,导出到jpg / gif

时间:2013-01-07 18:18:50

标签: vba visio

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

我说“org charts”bc他们实际上是将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+ doc的副本,然后删除其余页面。打开原始第二次,保存为第二页,然后删除其余页面,并重复300次以上。我在10页左右和3个小时后退出。

似乎所有可能的解决方案路径都会遇到陷阱,沼泽,悬崖......

总的来说,互联网上有一些非常简单或技术性很强的Visio信息。对于任何其他Office产品,论坛等中都有大量信息,示例等。但Visio是其蟋蟀。

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

感谢。

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

2 个答案:

答案 0 :(得分:1)

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

这是一台虚拟打印机,可打印为P​​DF,JPG,BMP,PNG(对图表非常有用)和许多其他格式。

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

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

将每个页面打印为单独的文件

printing each page to separate file

自动保存选项:

enter image description here

答案 1 :(得分:0)

我决定采取不同的方法。

我使用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 ")