miércoles, 14 de diciembre de 2022

69- Control WebBrowser para mostrar documentos o páginas Web

 El control WebBrowser nos permite mostrar en una hoja o en un formulario Userform, el contenido de documentos, páginas Web, como así también gifs o imágenes animadas.

En video N° 20 ya vimos cómo trabajar con Userforms que presentaban una tarjeta animada, con referencia a las fiestas de fin de año.

Y en video N° 40, vimos otros ejemplos donde colocamos tarjetas animadas ya sea en la apertura del libro o al activar una hoja de inicio.

En esta entrada veremos 2 usos más.

1 - Mostrar un documento (Pdf, Doc u otro tipo de archivo)

Este ejercicio continúa al tema anterior donde mostrábamos una lista de documentos según la carpeta y subcarpeta que elegimos desde un par de desplegables. 

Al seleccionar un elemento de la lista, se nos mostrará el contenido de ese PDF. Con todas las herramientas propias de Adobe que nos permite guardar, imprimir o cambiar de tamaño al PDF.

El libro, que se puede descargar desde el enlace al pie, presenta toda la programación ya vista en tema anterior. Aquí solamente agregaré las instrucciones correspondientes al evento Click del control ListBox.

Private Sub ListBox1_Click()

If ListBox1.ListIndex < 0 Then Exit Sub

Dim rutaPDF As String, archivo As String, ext As String

'la ruta del pdf es la del libro activo + carpeta+subcarpeta = Dire

    rutaPDF = Dire & "\"

'nombre del Pdf

    archivo = ListBox1.List(ListBox1.ListIndex, 0)

'extensión

    'ext = ".pdf"

WebBrowser1.Navigate rutaPDF & archivo    'mis archivos incluyen la extensión

End Sub

Previamente, habrá que agregar una instrucción al inicio del módulo Userform1, para declarar la variable Dire que es una variable compartida con varios de los procesos.

Dim Dire As String


2 - Mostrar una página Web dentro de un control WebBrowser.

En este ejercicio, al activar el Userform ya se mostrará el contenido de alguna página Web. De allí podremos tomar información, ya sea números, textos, completar tablas, etc.

Private Sub UserForm_Activate()    'ruta a la pág de Wikipedia, Población mundial.

Dim rutaWeb As String

rutaWeb = "https://es.wikipedia.org/wiki/Poblaci%C3%B3n_mundial"

WebBrowser1.Navigate rutaWeb

End Sub


Importante: si la página elegida presenta mucha publicidad nos aparecerán mensajes de aceptar o cancelar los Scrip, lo que puede hacer muy poco práctico el uso de este método para capturar información de allí

Descargar libro de ejemplo desde aquí.

Ver video N° 69 desde aquí.


jueves, 8 de diciembre de 2022

68 - Listar Carpetas, Subcarpetas y Archivos.

 Cuando necesitamos trabajar con directorios que pueden ser ubicados (en paquete) en otra ubicación, nos será útil contar con un programita que utilice el objeto FileSystemObject. 

Veremos el uso del método GetFolder para obtener el contenido de una carpeta, las propiedades SubFolder y Files para hacer referencia a la colección de subcarpetas y archivos respectivamente.

En el ejemplo, contaré con un control desplegable (ComboBox1) para presentar las primeras carpetas a recorrer. Asumo que estarán en la misma ubicación del libro activo.


Luego tendremos un segundo control desplegable (ComboBox2)  que nos mostrará las subcarpetas de la carpeta seleccionada en el primer control.


Y así podemos seguir con otras ubicaciones hasta encontrar la carpeta que contenga los archivos que buscamos. En este caso, la selección del segundo control ya nos devolverá en una lista (ListBox1) el total de archivos allí encontrados.


A continuación solo resta desarrollar la acción que realizaremos sobre esa lista. Imprimir todos, seleccionar 2 o más archivos para eliminarlos, moverlos a otra ubicación, etc.

Los códigos desarrollados en el libro que se adjunta en esta entrada (ver descarga al pie) son los siguientes.

Dim ruta As String     'ruta de las carpetas Entradas y Salidas

 

Private Sub UserForm_Initialize()

ComboBox1.AddItem "ENTRADAS"

ComboBox1.AddItem "SALIDAS"

End Sub

 

Private Sub ComboBox1_Change()      'listar subcarpetas en el 2do combobox

Dim fs As Object, carpeta As Object, subcarpeta As Object

 

'la ruta de la carpeta principal es la del libro activo

    ruta = ThisWorkbook.Path & "\" & ComboBox1.Text

'contempla posible error de ruta no hallada

    On Error GoTo sinRuta

'se crea la referencia al objeto Filesystem

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set carpeta = fs.GetFolder(ruta)

'se agregan las subcarpetas al 2do combobox

ComboBox2.Clear

    For Each subcarpeta In carpeta.SubFolders

        ComboBox2.AddItem subcarpeta.Name

    Next

Exit Sub

 

sinRuta:

    MsgBox "No se encontraron carpetas en la ruta indicada."

End Sub

 

Private Sub ComboBox2_Change()     'listar los archivos de la subcarpeta seleccionada

Dim Archi                   'guarda el nombre de cada archivo encontrado

Dim Dire  As String         'guarda el directorio a revisar

'la ruta de la subcarpeta

    Dire = ruta & "\" & ComboBox2.Text

 

'con el objeto Filesystem y con los objetos encontrados en la subcarpeta

On Error GoTo sinRuta

With CreateObject("Scripting.FileSystemObject")

    With .GetFolder(Dire)

    'se recorre el conjunto de archivos encontrados

    ListBox1.Clear

    For Each Archi In .Files

        ListBox1.AddItem Archi.Name

    Next

    End With

End With

Exit Sub

 

sinRuta:

    MsgBox "No se encontró la ruta de la subcarpeta."

End Sub

 

Private Sub ListBox1_Click()

If ListBox1.ListIndex < 0 Then Exit Sub

MsgBox "Has seleccionado el archivo " & ListBox1.List(ListBox1.ListIndex)

End Sub

 

Private Sub CommandButton1_Click()   'botón para limpiar controles y volver a empezar

ComboBox1.ListIndex = -1: ComboBox1.SetFocus

ListBox1.Clear: ComboBox2.Clear

End Sub



Descargar libro de ejemplo desde aquí.

Ver video N° 68 desde aquí.