ファイル選択ダイアログでファイルパスを取得する
id:so_blue:20080715をベースに作ってみた。
環境によってInternet Explorerが再利用できたりできなかったりするのは何故だろう? 安全側にふってInputFileOpenDialog
を呼ぶたびにInternet Explorerを起動・終了することにした。
Class FileOpenDialog Private ivar_ie Private Sub Class_Initialize Set ivar_ie = CreateObject("InternetExplorer.Application") ivar_ie.MenuBar = False ivar_ie.AddressBar = False ivar_ie.ToolBar = False ivar_ie.StatusBar = False ivar_ie.Navigate "about:blank" 'ivar_ie.Visible = True WaitReadyStateComplete ivar_ie.document.Write "<html><body></body></html>" End Sub Private Sub Class_Terminate ivar_ie.Quit Set ivar_ie = Nothing End Sub Private Sub WaitReadyStateComplete Do While ivar_ie.Busy And ivar_ie.ReadyState <> 4 WScript.Sleep 10 Loop End Sub Public Function GetFilePath ivar_ie.document.body.innerHTML = "<input type='file' id='FileOpenDialog' />" Dim file Set file = ivar_ie.document.getElementById("FileOpenDialog") file.Click If Len(file.Value) > 0 Then GetFilePath = file.Value End If End Function End Class Function InputFileOpenDialog Dim dialog Set dialog = New FileOpenDialog InputFileOpenDialog = dialog.GetFilePath End Function