【入門編】【初心者向け】開いている全図面のページ数をカウントし、PDF出力前にリスト化してログ保存する – Visio VBA解析バイブル

スポンサーリンク

【Visio VBA極意】開いている全図面のページ数を即座に集計し、PDF出力の「事故」を未然に防ぐ自動化術

こんにちは。現場の最前線で自動化を推進しているエンジニアです。

「Visioで大量のファイルを開いて作業しているとき、結局どれが何ページあるのか分からなくなる」「PDFに出力した後にページ抜けに気づいて青ざめる」……そんな経験はありませんか?

今回は、Visio VBAを使って、開いている全ファイルの構成を瞬時に把握し、ログとして書き出すという、自動化の第一歩にして最強の「守りのツール」を伝授します。

マクロの記録ボタンを押すだけの日々は今日で卒業しましょう。VBAの「心臓部」に触れる準備はいいですか?

—

1. なぜ「開いている全図面」を管理する必要があるのか

Visioはオブジェクト指向に基づいたアプリケーションです。私たちが普段見ている「図面(Document)」は、背後で巨大な階層構造(Application > Documents > Pages)として管理されています。

手作業でプロパティを確認するのは非効率なだけでなく、ヒューマンエラーの温床です。今回作成するツールは、以下の3ステップで「図面の状態」を可視化します。

1. 開いている全ドキュメントをループで回す
2. 各ドキュメントが持つページ数をカウントする
3. 結果をテキストファイル(ログ)としてデスクトップに吐き出す

—

2. 現場で使える「集計マクロ」の全貌

以下のコードをVBAエディタ(`Alt + F11` で起動し、挿入 > 標準モジュール)に貼り付けてください。

Option Explicit

‘ ==========================================
‘ 機能: 開いている全図面のページ数を集計し、ログに出力する
‘ 著者: Visio自動化アーキテクト
‘ ==========================================
Sub ExportDocumentReport()
Dim doc As Visio.Document
Dim logPath As String
Dim fileNum As Integer

‘ ログファイルの保存先をデスクトップに設定
logPath = CreateObject(“WScript.Shell”).SpecialFolders(“Desktop”) & “\Visio_Page_Report.txt”
fileNum = FreeFile

‘ ファイル書き込みモードで開く
Open logPath For Output As #fileNum

Print #fileNum, “— Visio 図面ページ数レポート —”
Print #fileNum, “作成日時: ” & Now
Print #fileNum, “———————————”

‘ Application.Documents は、開いているすべてのファイルを持つコレクション
For Each doc In Application.Documents
‘ 各ドキュメントの名前とページ数をログに記録
Print #fileNum, “ファイル名: ” & doc.Name
Print #fileNum, “ページ数: ” & doc.Pages.Count
Print #fileNum, “———————————”
Next doc

Close #fileNum

MsgBox “レポートを出力しました:” & vbCrLf & logPath, vbInformation
End Sub

—

3. コードの「魂」を読み解く:3つのポイント

初心者の方が必ず理解すべき「VBAの作法」がここに詰まっています。

① `For Each` ループの威力

`For Each doc In Application.Documents`
これは、「開いている全ドキュメントを順番に『doc』という名前の変数に入れて処理しなさい」という命令です。何個ファイルが開いていても自動で追従する、自動化の基本中の基本です。

② `FreeFile` という気遣い

`fileNum = FreeFile`
ファイルを保存する際に「1番」といった番号を直接指定すると、他の処理と競合する可能性があります。`FreeFile`は、システム内で今空いている「安全な番号」を自動で取得してくれる関数です。これができると、一気にエンジニアっぽくなります。

③ オブジェクトの階層構造

`doc.Pages.Count`
Visioのオブジェクトモデルを理解する鍵です。ドキュメントの中にページという「箱」があり、その数を数える(Count)という構造を意識するだけで、図形操作も自由自在になります。

—

4. 陥りやすいエラーと対策

  • 「変数が定義されていません」と出る

`Option Explicit` を記述しているためです。これは「宣言していない変数は使わせない」という、バグを未然に防ぐための強力な設定です。必ず `Dim` で変数を宣言しましょう。

  • 権限エラーで保存できない

ログの出力先フォルダに書き込み権限がない場合があります。まずはコード通り「デスクトップ」に出力するのが一番安全です。

—

5. 次のステップへ

このコードをマスターしたら、次は「特定のページ数以上だったらアラートを出す」「PDF出力後にファイル名とページ数をExcelに転記する」といった応用が待っています。

自動化は、「面倒くさい」という感情を「仕組み」に変える作業です。まずはこのツールを自分の手で動かし、Visioという巨大なシステムを自分のコントロール下に置く快感を味わってください。

ここをクリアしたあなたは、もうただのユーザーではありません。「図面を操るエンジニア」の入り口に立っています。

何か詰まったら、いつでも戻ってきてくださいね。応援しています!

タイトルとURLをコピーしました