Trucos y ejemplos de VBA para Microsoft Access

En esta página encontrarán algunos ejemplo de trucos de VBA (Visual Basic for Applications) que puedes utilizar en aplicaciones desarrolladas con la base de datos Microsoft Access. También puedes descargar los formularios, informes y códigos de ejemplo de Microsoft Access que encontrarás en esta página y disponer de ellos como quieras, ya sea para uso personal o profesional.

Empecé a desarrollar aplicaciones con Microsoft Access en 1995 con la primera versión Access 2.0 y hasta el día de hoy, es decir 27 años. Recuerdo que fue fascinantes pasar de COBOL a Access como herramienta por la cantidad de cosas que se simplificaban.

Dado que siempre he sido autodidacta, tanto en Basic como en PHP hay dos cosas que siempre me han ido muy bien, ejemplos de las funciones y un libro de referencia. Os dejo una recomendación que os puede ser útil.

Contenidos de FileSystem

-Todos- FileSystem (3)
Leer archivos grandes con VBA - Seleccionar un archivo - Unir archivos de texto -

Leer archivos grandes con VBA

Un ejemplo de lectura de archivos grandes sin que se bloquee el PC por falta de recursos. Probado con un archivo de 4 GB...
Rutina de lectura:
Public Sub ImportV2()
    Dim strReg As String
    Dim strFile As String
    Dim fso As FileSystemObject
    Dim fil As Object
    strFile = "C:\Users\username\Downloads\file.txt"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fil = fso.OpenTextFile(strFile, 1)
    Do Until fil.AtEndOfStream
        strReg = fil.ReadLine
    Loop
    fil.Close
End Sub


Seleccionar un archivo

Cómo seleccionar un archivo desde un formulario de Microsoft Access usando VBA....
Recordar que se requiere una referencia a la librería: Microsoft Office 16.0 Object Library.
Public Function SelectFileSample() As String
   ' Requires reference to Microsoft Office 16.0 Object Library.
   Dim fDialog As Office.FileDialog
   Dim varFile As Variant
   Dim fso As FileSystemObject
   ' Set up the File Dialog.
   Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
   With fDialog
        '.InitialFileName = strCarpeta ' Default folder
        ' Allow user to make multiple selections in dialog box
        .AllowMultiSelect = False
        ' Set the title of the dialog box.
        .Title = "Seleccionar un fichero"
        ' Clear out the current filters, and add our own.
        .Filters.Clear
        ' Sample for filters
        '.Filters.Add "Image JPG", "*.JPG"
        '.Filters.Add "Image PNG", "*.PNG"
        .Filters.Add "Todos los archivos", "*.*"
        ' Show the dialog box. If the .Show method returns True, the
        ' user picked at least one file. If the .Show method returns
        ' False, the user clicked Cancel.
        If .Show = True Then
           'Loop through each file selected and add it to our list box.
           For Each varFile In .SelectedItems
             'Me.FileList.AddItem varFile
              SelectFileSample = varFile
           Next
        Else
           MsgBox "No saleccionado ningún fichero", vbInformation, "Select File"
        End If
   End With
End Function


Unir archivos de texto

Bucle para unir ficheros de texto que están en una misma carpeta, en este caso .csv en uno solo....
El siguiente código asume que todos tus archivos CSV tienen la misma estructura (es decir, las mismas columnas en el mismo orden). El proceso básicamente abre cada archivo CSV en la carpeta especificada, lee su contenido y lo escribe en un nuevo archivo CSV.
    Dim rutaCarpeta As String
    Dim archivo As String
    Dim nombreArchivoUnido As String
    Dim textoArchivo As String
    Dim primeraLinea As Boolean
    Dim numArchivo As Integer
    Dim fso As Object, ts As Object, tsUnion As Object

    rutaCarpeta = "C:\TuCarpeta\" ' Modifica con la ruta de tu carpeta
    nombreArchivoUnido = rutaCarpeta & "ArchivoUnido.csv" ' Nombre del archivo final

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set tsUnion = fso.CreateTextFile(nombreArchivoUnido, True)

    archivo = Dir(rutaCarpeta & "*.csv")
    primeraLinea = True

    Do While archivo <> ""
        ' Evita leer el archivo unido si ya existe en la carpeta
        If archivo <> "ArchivoUnido.csv" Then
            numArchivo = numArchivo + 1
            Set ts = fso.OpenTextFile(rutaCarpeta & archivo, ForReading)

            ' Omitir la primera línea del archivo si no es el primero (suponiendo que es el encabezado)
            If Not primeraLinea Then ts.ReadLine

            ' Leer el contenido del archivo y escribirlo en el archivo unido
            Do While ts.AtEndOfStream <> True
                textoArchivo = ts.ReadLine
                tsUnion.WriteLine textoArchivo
            Loop

            ts.Close
            primeraLinea = False
        End If

        archivo = Dir() ' Siguiente archivo
    Loop

    tsUnion.Close
    Set ts = Nothing
    Set tsUnion = Nothing
    Set fso = Nothing

    MsgBox numArchivo & " archivos han sido unidos en " & nombreArchivoUnido, vbInformation
End Sub
Este código realiza las siguientes tareas:
  1. Establece la ruta de la carpeta donde se encuentran los archivos CSV y el nombre del archivo CSV unido final.
  2. Utiliza un objeto FileSystemObject para trabajar con archivos y carpetas.
  3. Abre cada archivo CSV en la carpeta, omite la primera línea para todos los archivos excepto el primero (asumiendo que es un encabezado) y escribe su contenido en un nuevo archivo CSV.
  4. Continúa este proceso para todos los archivos CSV en la carpeta.
  5. Muestra un mensaje al finalizar, indicando cuántos archivos han sido unidos.
Asegúrate de modificar rutaCarpeta con la ruta correcta de tu carpeta de archivos CSV. También, este código omite el encabezado de todos los archivos excepto el primero; si tus archivos no tienen encabezados o quieres incluirlos todos, puedes ajustar la lógica acordemente. Este código es un punto de partida básico. Dependiendo de tus necesidades específicas, podrías necesitar hacer ajustes, especialmente si los archivos CSV tienen diferentes estructuras o requieres un procesamiento de datos más complejo.



Desarrollado con el plugin AB Dictionary para WordPress

Descargas de ejemplos de Microsoft Access

Historia Clínica

Es una base de datos sencilla para gestionar la historia clínica de una persona. Encontraras conceptos básicos como formularios, botones e informes. No se usan módulos VBA excepto el de los forms. Para nivel básico. Descargar HistoriaClinica en formato ZIP.

Acerca de Microsoft Access

Microsoft Access, una parte integral de la suite de Microsoft Office, es un sistema de gestión de bases de datos introducido por primera vez en 1992. Diseñado para usuarios de Windows, Access se creó para satisfacer la necesidad de un programa que pudiera manejar la gestión de datos y el desarrollo de aplicaciones de una manera más accesible que los sistemas de bases de datos más complejos y costosos de la época.

Desde su lanzamiento, Access se destacó por permitir a los usuarios no solo almacenar y gestionar grandes cantidades de información de manera eficiente, sino también por facilitar la creación de interfaces de usuario personalizadas y aplicaciones de bases de datos a través de su entorno de desarrollo integrado. Esto lo hizo especialmente popular entre las pequeñas y medianas empresas, así como entre los departamentos dentro de organizaciones más grandes, que necesitaban soluciones de bases de datos personalizadas sin la inversión significativa que requerían otros sistemas.

A lo largo de los años, Microsoft ha lanzado varias versiones de Access, cada una añadiendo nuevas funcionalidades, mejorando la interfaz de usuario y aumentando la integración con otros productos de Microsoft Office. Estas mejoras han permitido a Access mantenerse relevante en un mercado en constante cambio, adaptándose a las necesidades de los usuarios modernos y a las tendencias tecnológicas.

A pesar de enfrentar la competencia de otras soluciones de bases de datos y de la creciente popularidad de las soluciones basadas en la nube, Microsoft Access ha mantenido un núcleo leal de usuarios. Su capacidad para combinar una gestión de datos robusta con herramientas de desarrollo de aplicaciones relativamente fáciles de usar ha asegurado su lugar como una herramienta valiosa para la gestión de datos personal y empresarial.

Con el paso del tiempo, Microsoft Access ha evolucionado desde sus inicios como una herramienta de base de datos para pequeñas empresas hasta convertirse en una solución de gestión de datos completa, demostrando su durabilidad y adaptabilidad en el ámbito tecnológico.

6 comentarios en “Trucos y ejemplos de VBA para Microsoft Access”

  1. Saludos.
    ¿Como hacer un instalador de programas ? Algo que grabe algunos archivos predeterminados en algún lugar del disco duro de manera discreta.

  2. s@lu2
    tengo una bd de un Almacen , en un formulario de salida de productos quiciera poder limitar la cantidad a «salir» de acuerdo al inventario existente para cada articulo.

    gracias

  3. hola no soy experta ni mucho menos, hice un formulario que manda llamar información de una base vinculada, pero no me extrae varios campos, no se por que razón, haber si alguién pueda orientarme gracias.
    On Error GoTo Button_TratamientoErrores
    ‘mySql = «SELECT calendariobpm .institucio, calendariobpm .examen, calendariobpm .fec_ini, calendariobpm .aplicados, calendariobpm .registrado, calendariobpm .for_env, calendariobpm .desc_cal, calendariobpm .ent_arccal, curcalenbpm.requerimie FROM calendariobpm INNER JOIN curcalenbpm ON calendariobpm.num_aplic=curcalenbpm.num_aplic WHERE num_aplic = ‘» & Me.Aplicación & «‘»
    On Error GoTo Button_TratamientoErrores
    mySql = «SELECT institucio, examen, fec_ini, aplicados, registrado, for_env, desc_cal, ent_arccal, desc_exa, Requerimie FROM curcalenbpm»
    mySql = mySql & » WHERE num_aplic = ‘» & Me.Aplicación & «‘»
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset(mySql, dbOpenSnapshot)

    Me.Institución.Value = rst.Fields(0)
    Me.Examen.Value = rst.Fields(1)
    Me.Fecha_de_aplicación.Value = rst.Fields(2)
    Me.Aplicados.Value = rst.Fields(3)
    Me.Registrados.Value = rst.Fields(4)
    Me.Entrega_resultados.Value = rst.Fields(5)
    Me.des_exa.Value = rst.Fields(6)
    Me.Requerimientos.Value = rst.Fields(7)

    rst.Close
    dbs.Close
    Set rst = Nothing
    Set dbs = Nothing
    nota los campos que si jala son
    Me.Institución.Value = rst.Fields(0)
    Me.Examen.Value = rst.Fields(1)
    Me.Fecha_de_aplicación.Value = rst.Fields(2)
    y los que no acepta son:
    Me.Aplicados.Value = rst.Fields(3)
    Me.Registrados.Value = rst.Fields(4)
    Me.Entrega_resultados.Value = rst.Fields(5)
    Me.des_exa.Value = rst.Fields(6)
    Me.Requerimientos.Value = rst.Fields(7)

  4. Si pudieras enviar un mdb de ejemplo solo con un formulario, la tabla con datos de ejemplo y el código te lo puedo mirar

  5. Eso es bastante sencillo de hacer, pero se debería usar código VBA en el momento de validar los datos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies