WizHookオブジェクト


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