Da es mit dem "UserAccounts.CommonDialog"-Objekt seit Windows 7 nicht mehr geht eine kleiner Umweg durch eine HTA-Datei und Input-Field vom Typ File.

 

Option Explicit
MsgBox openfileDialog

Function openfileDialog()
  Dim fs, wsh, f
  Dim s, sTmp, sTxt, sHTA
  On Error Resume Next
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set wsh = CreateObject("WScript.Shell")
  sTmp = wsh.ExpandEnvironmentStrings("%temp%") & "\~filedialog."
  sTxt = sTmp & "txt"
  sHTA = sTmp & "hta"
  Set f = fs.OpenTextFile(sHTA, 2, True)
  s = "<html><head><HTA:APPLICATION BORDER=""none""></head><SCRIPT LANGUAGE=""VBScript"">" & vbCrLf & _
      "Sub Window_onLoad" & vbCrLf & _
      "Dim st, sp, f, fs, wsh" & vbCrLf & _
      "window.resizeTo 1, 1" & vbCrLf & _
      "fd.click" & vbCrLf & _
      "sp = fd.Value" & vbCrLf & _
      "If sp <> vbNullString Then" & vbCrLf & _
      "Set wsh = CreateObject(""WScript.Shell"")" & vbCrLf & _
      "Set fs = CreateObject(""Scripting.FileSystemObject"")" & vbCrLf & _
      "Set f = fs.OpenTextFile(""" & sTxt & """, 2, True)" & vbCrLf & _
      "f.write sp" & vbCrLf & _
      "f.close" & vbCrLf & _
      "Set fs = Nothing" & vbCrLf & _
      "Set wsh = Nothing" & vbCrLf & _
      "End If" & vbCrLf & _
      "self.close" & vbCrLf & _
      "End Sub" & vbCrLf & _
      "</SCRIPT>" & vbCrLf & _
      "<body><fieldset><input name=""fd"" type=""file"" id=""fd"" class=""invisible""></fieldset></body>"
  
  f.write s
  f.Close
  wsh.Run sHTA, 1, True
  Set f = fs.OpenTextFile(sTxt, 1, True)
  openfileDialog = f.readline
  f.Close
  Set fs = Nothing
  wsh.Run wsh.ExpandEnvironmentStrings("%COMSPEC%") & " /C DEL /q /f " & sTmp & "*"
  Set fs = Nothing
  Set wsh = Nothing
End Function

 

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.