Script - Abrir archivo usando cuadro de diálogo (common dialog)

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 12:25 PM por David Miralpeix

Ú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

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo