【入門編】【初心者向け】保存ダイアログを抑制して、指定フォルダへ自動的にVSDXを保存するVBA実装 – Visio VBA解析バイブル

スポンサーリンク

こんにちは。Visioの世界へようこそ。

「マクロの記録」ボタンを押して、生成されたコードのあまりの長さに絶望したことはありませんか?あるいは、ファイルを保存するたびに「名前を付けて保存」のダイアログに手を止めていませんか?

自動化の第一歩は、「手作業の割り込みを排除すること」です。今日は、Visio VBAを使って、ダイアログを無視して「日付付きのファイル名」で一瞬のうちに保存を完了させる、実用的なアーキテクチャを伝授します。

—

1. なぜ「手動保存」をやめるのか?

エンジニアとして最も避けたいのは「ヒューマンエラー」です。ファイル名の打ち間違い、保存先の間違い、上書き保存による消失…。これらは自動化によってすべて撲滅できます。

Visioの `SaveAs` メソッドを使いこなせば、PCがあなたの代わりに正確な命名規則でファイルを整理してくれるようになります。

2. 実装コード:自動保存のテンプレート

以下のコードをVBAエディタ(Alt + F11)に貼り付けてみてください。まずはここからがスタート地点です。

Sub AutoSaveVisioDocument()
Dim doc As Visio.Document
Dim folderPath As String
Dim fileName As String
Dim fullPath As String

‘ 1. 保存先フォルダを指定(※フォルダは事前に作成しておいてください)
folderPath = “C:\Users\YourName\Documents\VisioExports\”

‘ 2. ファイル名に現在の日時を付与(例: 20231027_Drawing.vsdx)
fileName = Format(Now, “yyyymmdd_hhnnss”) & “_Drawing.vsdx”
fullPath = folderPath & fileName

‘ 3. 現在のドキュメントを取得
Set doc = ActiveDocument

‘ 4. エラーハンドリング(既に開いているか、保存先が正しいか)
On Error GoTo ErrorHandler

‘ 5. 保存を実行(SaveAsメソッド)
‘ 引数0は「既存のファイルを上書きする」オプションです
doc.SaveAs fullPath

MsgBox “保存が完了しました:” & vbCrLf & fullPath, vbInformation
Exit Sub

ErrorHandler:
MsgBox “保存に失敗しました。パスが正しいか確認してください。” & vbCrLf & _
“エラー詳細: ” & Err.Description, vbCritical
End Sub

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

初心者の方が最初につまずきやすいポイントを、エンジニアの視点で解説します。

① `SaveAs` の引数の重要性

`doc.SaveAs(fullPath)` は、実は非常に強力です。
もし同じフォルダに同名のファイルがある場合、Visioのデフォルト設定によっては警告が出ることがあります。業務で自動化を行う際は、「警告を出させない環境設定」が不可欠です。

② `Format(Now, “yyyymmdd_hhnnss”)` の魔力

ファイル名に「今日の日付」を入れるのは、バージョン管理の基本です。

  • `yyyymmdd`: 20231027 のように並ぶため、PCのフォルダ上で日付順にソートしやすくなります。
  • `hhnnss`: 時分秒を入れることで、1日に何度も修正してもファイルが上書きされず、履歴として残せます。

③ エラーハンドリング(On Error GoTo)

自動化プログラムにおいて、「何もしない」が一番の悪です。保存が失敗したときにプログラムが止まってしまうと、ユーザーは「保存されたはず」と勘違いします。必ず `ErrorHandler` を書き、異常時には必ずユーザーに知らせるようにしましょう。

—

4. 次のステップ:さらに上を目指すあなたへ

このコードをマスターしたあなたは、もう「マクロの記録」に頼る必要はありません。次に挑戦すべきは以下のトピックです。

  • PDF出力の自動化: `doc.Export` メソッドを使って、保存と同時にPDFを生成する。
  • フォルダの自動生成: `Dir` 関数を使って、保存先フォルダが存在しなければ自動で作る仕組みを作る。
  • 外部設定ファイル: フォルダパスをVBAの中に直接書かず、別ファイル(テキストやExcel)から読み込む。

Visio VBAは、オブジェクト(図形やページ)の階層構造さえ理解してしまえば、事務作業の9割を自動化できる強力な武器になります。

「ここをクリアすれば、Visio VBAの基本はバッチリですよ」

まずはこのコードを動かし、自分の手でファイルが生成される心地よさを体感してください。何かわからないことがあれば、またいつでも聞きに来てくださいね。エンジニアとしての最初の一歩、応援しています!

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