VBScript

ファイル選択ダイアログ

ファイル選択ダイアログを表示するVBScriptをまとめてみました。
OSやIEのバージョンによっては実行できないものもあります。

Option Explicit

'MsgBox GetFilePathMC()
'MsgBox GetFilePathSF()
'MsgBox GetFilePathUACD()
'MsgBox GetFilePathIE()
MsgBox GetFilePathIE2()

Private Function GetFilePathMC()
'Comdlg32.ocxを利用したダイアログ
'※ 要コントロールデザイン時のライセンス(http://support.microsoft.com/kb/281848/ja)
  With CreateObject("MSComDlg.CommonDialog")
    .Filter = "All Files|*.*"
    .InitDir = "."
    .MaxFileSize = 256
    .ShowOpen
    GetFilePathMC = .FileName
  End With
End Function

Private Function GetFilePathSF()
'SAFRCFileDlg.FileOpenを利用したダイアログ
'※ Windows XP限定
  With CreateObject("SAFRCFileDlg.FileOpen")
    If .OpenFileOpenDlg Then GetFilePathSF = .FileName
  End With
End Function

Private Function GetFilePathUACD()
'UserAccounts.CommonDialogを利用したダイアログ
'※ Windows XP限定
  With CreateObject("UserAccounts.CommonDialog")
    .Filter = "All Files|*.*"
    .InitialDir = "."
    If .ShowOpen Then GetFilePathUACD = .FileName
  End With
End Function

Private Function GetFilePathIE()
'IEを利用したダイアログ
'※ Internet Explorer 8以降ではfakepathが返されます。
  Dim iptObj
  Dim ret
  
  With CreateObject("InternetExplorer.Application")
    .Visible = False
    .Navigate "about:blank"
    
    '表示待ち
    While .Busy Or .readyState <> 4
      WScript.Sleep 100
    Wend
    
    Set iptObj = .document.createElement("input")
    iptObj.setAttribute "type", "file"
    .document.body.appendChild iptObj
    iptObj.Click
    ret = iptObj.Value
    Set iptObj = Nothing
    .Quit
  End With
  GetFilePathIE = ret
End Function

Private Function GetFilePathIE2()
'IEを利用したダイアログ(2)
'※ Internet Explorer 8以降にも対応
  Dim iptObj
  Dim ret
  
  With CreateObject("InternetExplorer.Application")
    .Visible = False
    .FullScreen = True
    .Navigate "about:blank"
    
    '表示待ち
    While .Busy Or .readyState <> 4
      WScript.Sleep 100
    Wend
    
    Set iptObj = .document.createElement("input")
    iptObj.setAttribute "type", "file"
    .document.body.appendChild iptObj
    iptObj.Click
    If Trim(Len(iptObj.Value)) > 0 Then
      iptObj.Focus
      .ExecWB 17, 0 'OLECMDID_SELECTALL
      .ExecWB 12, 0 'OLECMDID_COPY
      ret = CreateObject("htmlfile").parentWindow.clipboardData.GetData("text")
    End If
    Set iptObj = Nothing
    .Quit
  End With
  GetFilePathIE2 = ret
End Function

クリップボードに文字列をコピーする前のページ

bitlyのAPIキーを取得する次のページ

関連記事

  1. Office関連

    ヘッドレス ChromeとSeleniumBasicでWebページ全体のスクリーンショットを撮る方法…

    先日、ヘッドレス ChromeでWebページ全体のスクリーンショットを…

  2. VBScript

    ドラッグ&ドロップされたファイルの内容をクリップボードにコピーするVBScript

    「clipコマンドを利用してクリップボードに文字列をコピーするVBSc…

  3. VBScript

    Office文書を旧バージョンのファイル形式に変換するVBScript

    xlsxやdocxといった新しい形式のOffice文書をスクリプトファ…

  4. VBScript

    指定したフォルダ内で最も更新日時の新しいファイルのパスを取得するVBScript

    大量のログファイルから最新のファイルのみを取得する必要があったので、簡…

  5. VBScript

    Illustratorに登録されたPDFプリセットを列挙するVBScript

    前回の記事で、VBSからIllustratorが操作できることを紹介し…

  6. Windows 10

    AppUserModelId(AUMID)を列挙するVBScript

    「「ファイル名を指定して実行」からMicrosoft Edgeを起動す…

コメント

  1. この記事へのコメントはありません。

  1. 2013年 12月 02日

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP