Accessの隠しオブジェクト。
このオブジェクトを使うと「名前を付けて保存」ダイアログを起動したりといった
標準のAccessの機能では行えないことを実現することができる。
非公式なオブジェクトなので使用する際はそれなりの覚悟が必要。
使用例(ダイアログを起動するファンクション)
'/*------------------------------------------------------------------------------*/ '/* 概 要:ダイアログを表示 '/* 引 数:デフォルトファイル名 '/* :true→ファイルを開くダイアログ・false→名前を付けて保存ダイアログ '/* 戻り値:ダイアログに設定した値 '/*------------------------------------------------------------------------------*/ Function showWizHookDialog(ByVal inDefaultFile As String, ByVal OpenOrSaveFlg As Boolean) As String Dim returnValue As Integer Dim strFilePath As String strFilePath = inDefaultFile WizHook.Key = 51488399 'WIZHOOKを有効化する returnValue = WizHook.GetFileName( _ 0, "", "", "", strFilePath, "", _ "Microsoft Office Excelブック (*.xls)", _ 0, 0, 0, OpenOrSaveFlg _ ) WizHook.Key = 0 ' WizHook 無効化 showWizHookDialog = strFilePath End Function
そもそもWizHookを使用した目的はAccessから「名前をつけて保存」ダイアログを使用したかったからです。
始めはExcelのライブラリのGetSaveAsFilenameメソッドで実現をしていたのですが
画面をクリックしてプロセスが切り替わるとダイアログが最前面にでないという問題があったので
WizHookオブジェクトを使うことにしました。
他にもWindowsAPIをつかったり、コモンダイアログを参照設定して使うという手段もあったみたいですが・・・
動作確認環境:Access2003 sp3,Windows Xp sp2