Útil para cuando necesitamos abrir un archivo y que el usuario seleccione fácilmente la ruta.
Código VB6:
Utiliza las utilidades de common dialog propias de windows con file system object.
El ejemplo es proporcionado por la propia web de Microsoft tech net.
https://social.technet.microsoft.com/Forums/scriptcenter/en-US/a3b358e8-15ae-4ba3-bca5-ec349df65ef6/windows7-vbscript-open-file-dialog-
'Para que funcione, abrirlo desde un script en panel de favoritos. Option Explicit Sub Main() frmAux.Descargar 'ATENCIÓN: DEBE ESTAR SIEMPRE QUE NO SE MUESTRE EL FORMULARIO. Dim strFile strFile = SelectFile( ) If strFile = "" Then MsgBox "No file selected." Else MsgBox """" & strFile & """" End If End Sub Function SelectFile( ) ' File Browser via HTA ' Author: Rudi Degrande, modifications by Denis St-Pierre and Rob van der Woude ' Features: Works in Windows Vista and up (Should also work in XP). ' Fairly fast. ' All native code/controls (No 3rd party DLL/ XP DLL). ' Caveats: Cannot define default starting folder. ' Uses last folder used with MSHTA.EXE stored in Binary in [HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32]. ' Dialog title says "Choose file to upload". ' Source: https://social.technet.microsoft.com/Forums/scriptcenter/en-US/a3b358e8-15ae-4ba3-bca5-ec349df65ef6/windows7-vbscript-open-file-dialog-box-fakepath?forum=ITCG Dim objExec, strMSHTA, wshShell SelectFile = "" ' For use in HTAs as well as "plain" VBScript: ' strMSHTA = "mshta.exe ""about:" & "<" & "input type=file id=FILE>" _ ' & "<" & "script>FILE.click();new ActiveXObject('Scripting.FileSystemObject')" _ ' & ".GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);" & "<" & "/script>""" ' For use in "plain" VBScript only: strMSHTA = "mshta.exe ""about:<input type=file id=FILE>" _ & "<script>FILE.click();new ActiveXObject('Scripting.FileSystemObject')" _ & ".GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""" Set wshShell = CreateObject( "WScript.Shell" ) Set objExec = wshShell.Exec( strMSHTA ) SelectFile = objExec.StdOut.ReadLine( ) Set objExec = Nothing Set wshShell = Nothing End Function
Código C#:
Usamos la funcionalidad estándar que nos proporciona CommonDialogUsuario. En este ejemplo pide seleccionar un informe de la carpeta PATHLISTADOS y muestra por Msgbox la ruta del fichero seleccionado.
using AhoraCore; using AhoraOCX; using AhoraSistema; namespace AhoraScriptsVacia { public class Script_56 : AhoraOCX.AhoraBaseScript { public void Main() { ICommonDialogUsuario CDFile = new CommonDialogUsuario(); CDFile.Flags = FileOpenConstants.cdlOFNFileMustExist; CDFile.InitDir = gCn.Sesion.ParametroValor("PATHLISTADOS"); CDFile.Filter = "Todos los archivos (*.*)|*.*|Archivos de Report |*.rpt;*.resx"; CDFile.FilterIndex = 2; CDFile.DialogTitle = "Seleccione un informe"; CDFile.ShowOpen(); AhoraCore.VBA.Interaction.MsgBox("Fichero seleccionado; " + CDFile.FileName); } } }
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo