Visio VBAを制する者、業務を制す:PDF自動出力で「版管理の地獄」から脱出する
こんにちは。業務自動化の世界へようこそ。
「マクロの記録」ボタンを押すだけの世界から、一歩足を踏み出そうとしているあなたを歓迎します。
Visioでの図面作成、お疲れ様です。仕上げのPDF出力で「あれ?さっきのファイルどこだっけ?」「上書きしちゃった!」という事故、一度は経験したことがあるのではないでしょうか。
今日は、「現在時刻をファイル名に自動付与してPDF保存する」という、実務の現場で最も重宝されるオートメーション術を伝授します。これさえ習得すれば、あなたの作業は劇的にスマートになります。
—
1. なぜ「タイムスタンプ」なのか?
プロの現場では、同じファイル名で保存を繰り返すことは「罪」です。
誰が、いつ保存したか。この履歴をファイル名に含めるだけで、版管理の悩みは8割消滅します。
今回目指すのは、`図面名_20231027_1430.pdf` のような形式で、ワンクリックでPDFを書き出す仕組みです。
—
2. Visio VBAの「基本の型」を叩き込む
まずはコードを見てみましょう。標準モジュールに貼り付けてみてください。
Sub ExportToTimestampedPDF()
Dim doc As Visio.Document
Dim folderPath As String
Dim fileName As String
Dim timeStamp As String
‘ 1. 現在開いているドキュメントを特定
Set doc = ActiveDocument
‘ 2. ファイルパス(保存先)の設定 ※自分の環境に合わせて変更してください
folderPath = “C:\Users\YourName\Documents\PDF_Output\”
‘ 3. タイムスタンプ生成 (YYYYMMDD_HHMM形式)
timeStamp = Format(Now, “yyyymmdd_hhmm”)
‘ 4. ファイル名の構築(拡張子を除いたファイル名+タイムスタンプ)
‘ InStrRevで”.”の位置を探し、そこまでを切り出します
fileName = Left(doc.Name, InStrRev(doc.Name, “.”) – 1) & “_” & timeStamp & “.pdf”
‘ 5. PDFとしてエクスポート
‘ VisioのExportメソッドは非常に強力です
doc.ExportAsFixedFormat visFixedFormatPDF, folderPath & fileName
MsgBox “PDF保存が完了しました:” & vbCrLf & fileName, vbInformation
End Sub
—
3. コードの「魂」を理解する(解説)
コードをコピペして終わりにしてはいけません。なぜこう書くのかを知ることで、あなたは「初学者」から「エンジニア」へ進化します。
- `ActiveDocument`: 現在アクティブな図面を指す魔法の言葉です。ここを起点にすべての操作を行います。
- `Format(Now, “yyyymmdd_hhmm”)`: `Now`で現在時刻を取得し、それを好きな文字列に整形する。VBAにおいて最も頻繁に使う「武器」です。
- `InStrRev(doc.Name, “.”)`: これが重要です。「後ろから数えて最初のドット」を見つけます。`図面.vsdx` から `図面` だけを取り出すために必須のテクニックです。
- `ExportAsFixedFormat`: これこそVisio自動化の真髄。わざわざ「名前を付けて保存」のダイアログを出さずとも、瞬時にPDFへ変換します。
—
4. 初学者が陥りやすい「3つの罠」
現場で動かそうとした時、必ずと言っていいほど以下のエラーにぶつかります。先回りして対策を教えますね。
1. パスが存在しない: `folderPath` のフォルダが実際に存在しないとエラーになります。あらかじめフォルダを作成しておくか、VBAで `MkDir` コマンドを使ってフォルダを自動作成するロジックを追加しましょう。
2. 拡張子がないファイル: 新規作成直後で保存していないファイルの場合、`doc.Name` が “図面1” となり、ドットが見つからずエラーになります。`If InStr(doc.Name, “.”) > 0 Then …` といった条件分岐でガードしましょう。
3. 書き込み権限: 保存先が共有フォルダの場合、誰かが開いているとエラーになります。エラーハンドリング(`On Error Resume Next`など)を適切に配置することが、プロのエンジニアの嗜みです。
—
最後に:ここをクリアすれば「自動化の扉」が開く
ここまで理解できれば、あなたはもう「マクロの記録」しか知らない人とは一線を画しています。
次は「特定のページだけをPDFにする」のか、「すべてのページを一括出力する」のか……。やりたいことは無限に広がります。Visioは、あなたが思う以上に「指示」を忠実に実行してくれる優秀な相棒です。
まずはこのコードを動かし、コンソールに「PDF保存が完了しました」というメッセージが出た時の感動を味わってください。その一歩が、あなたの働き方を劇的に変える未来へのチケットになります。
応援していますよ。困ったことがあれば、またいつでも聞きに来てください。
