3

データをインポートして 300 以上の「組織図」を作成し、300 ページ以上の Visio 図面を作成しました。

「組織図」と言いますが、実際には Crystal Report を「CEO」として、そのデータソース テーブルとフィールドを「従業員」として描いたものです。

現在、300 ページ以上の巨大な Visio ファイルが 1 つあります。各ページは 1 つのレポートとそのデータソースです。しかし、私の目標は、それぞれが適切に名前を付けられた 300 以上の個別のドキュメントを取得することです。vba を使用すると、必要に応じて各ページの名前を変更したり、ページから目的の名前を取得したりできます。

理想的には、visioファイルではなくpdfファイルが必要ですが、ピンチで十分であり、最後に望ましいのは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 以上のドキュメントのコピーを最初のページの名前で保存し、残りのページを削除します。元の 2 回目を開き、2 ページ目として保存し、残りのページを削除し、300 回以上繰り返します。10ページほど読んで3時間でやめました。

考えられるすべての解決策は、落とし穴、沼地、崖にぶつかるようです..

一般的な注意事項として、非常に質素な、または非常に技術的な 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

私は別のアプローチをとることにしました。

300 ページ以上の Visio ドキュメントを作成する代わりに、VBA と Access を使用して各 Visio ページを個別に作成しました。Visio の組織図インポート データ ウィザードは強力ですが、上で概説したように、個々のページを取得するためのオプションが残っています。

そのため、Access で 300 以上のレポート レコードをループ処理し、各レポートのデータを 1 つずつ選択し、そのレポートの 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 に答える