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.
Si quieres contar las veces que aparece un determinado carácter en una cadena o string, puedes utilizar esta función o el código de la misma. También se conoce como "ocurrencias" de un carácter. ...
Función para contar caracteres en una cadena
Function absCharCount(Text As String, Char As String) As Long
Dim lngCount As Long
Dim strVar() As String
strVar = Split(Text, Char)
absCharCount = UBound(strVar)
End Function
Fecha: 30-08-2023
Eliminar caracteres especiales de una cadena
Función que elimina todos los caracteres especiales de una cadena....
Un par de ejemplos de algunas equivalencias entre ambos lenguajes para tratar cadenas....
ACCESS
PHP
Obtener un fragmento de una Cadena (String)
Dim MyString As String MyString = "This is string example"
MsgBox Mid(MyString, 5, 10)
$MyString = "This is string example";
echo substr($MyString,5,10);
Fragmentar una cadena en función de un carácter
Dim MyString As String
MyString = "Data1;Data2"
matString = Split(MyString,"")
debug.print matString(0) ' da Data1
debug.print matString(1) ' da Data2
$MyString = "Data1;Data2";
$matString = explode(";",$MyString);
echo matString[0] // da Data1
echo matString[1] // da Data2
Extensión de un archivo
Como saber la extensión de un archivo....
Esta instrucción tiene en cuenta que en el nombre del archivo pueda haber mas de un punto y que la extensión pueda ser un numero variable de caracteres. Se facilita en formato de Function pero puede ser convertida a una sola instrucción
Function ExtensionArchivo(Archivo As String, Optional Caracter As String = ".") As String
On Error Resume Next
ExtensionArchivo = Right(Archivo, Len(Archivo) - InStrRev(Archivo, Caracter))
End Function
Extraer el dominio de una URL
...
Public Function ExtraerURL(URL As String) As String
'quita la última barra
If Right(URL, 1) = "/" Then
ExtraerURL = Mid(URL, 1, Len(URL) - 1)
Else
ExtraerURL = URL
End If
ExtraerURL = Replace(ExtraerURL, "https://", "")
ExtraerURL = Replace(ExtraerURL, "http://", "")
End Function
Devuelve el valor www.alexborras.com
Jugando con las sustituciones también podríamos eliminar las primeras www si queremos solo el dominio raíz.
Extraer emails de un texto
Con esta función puedes extraer cuentas de correo electrónico de un texto o campo tipo string....
Esta es una función que suelo utilizar para extraer emails de texto. Es la versión simplificada para encontrar un solo email ya que con una modificación en el Gosub puede capturar un número indeterminado de emails y almacenarlos en una colección de objetos.
La función también sirve de ejemplo para la utilización de varias sentencias de manejo de strings en Visual Basic: Instr, Len, Mid y Asc
Public Function CapturarEmailTexto(Texto) As String
Dim indPos As Long
Dim indDesde As Long
Dim indHasta As Long
Dim strEmail As String
Dim strInt As String
On Error GoTo ErrorSub
CapturarEmailTexto = ""
strEmail = ""
If InStr(1, Texto, "@") = 0 Then Exit Function
For indPos = 1 To Len(Texto)
If Mid(Texto, indPos, 1) = "@" Then
GoSub Captura
Exit For
End If
Next
CapturarEmailTexto = strEmail
Exit Function
Captura:
indDesde = 0
indHasta = 0
' Buscar Inicio de Email
For indDesde = indPos - 1 To 0 Step -1
If indDesde = 0 Then Exit For
strInt = Mid(Texto, indDesde, 1)
If strInt = " " Then Exit For
If strInt = ":" Then Exit For
If strInt = "(" Then Exit For
If strInt = ")" Then Exit For
If strInt = "[" Then Exit For
If strInt = "]" Then Exit For
If strInt = "<" Then Exit For If strInt = ">" Then Exit For
If strInt = """" Then Exit For
If strInt = "'" Then Exit For
If Asc(strInt) = 13 Then Exit For ' Control de Return
If Asc(strInt) = 10 Then Exit For ' Control de Return
Next
' Buscar Final de Email
For indHasta = indPos + 1 To Len(Texto)
strInt = Mid(Texto, indHasta, 1)
If strInt = " " Then Exit For
If strInt = ":" Then Exit For
If strInt = "(" Then Exit For
If strInt = ")" Then Exit For
If strInt = "[" Then Exit For
If strInt = "]" Then Exit For
If strInt = "<" Then Exit For If strInt = ">" Then Exit For
If strInt = """" Then Exit For
If strInt = "'" Then Exit For
If Asc(strInt) = 13 Then Exit For ' Control de Return
If Asc(strInt) = 10 Then Exit For ' Control de Return
Next
' Determinar Mail
strEmail = Mid(Texto, indDesde + 1, indHasta - indDesde - 1)
' Eliminar Caracteres Finales incorrectos
If Right(strEmail, 1) = "." Then strEmail = Mid(strEmail, 1, Len(strEmail) - 1)
If Right(strEmail, 1) = "," Then strEmail = Mid(strEmail, 1, Len(strEmail) - 1)
Return
ErrorSub:
MsgBox Err.Number & ": " & Err.Description
End Function
Len: Contar caracteres en una cadena
La función Len que permite contar las apariciones de una cadena dentro de otra....
Esta es una función manual que puede permitir manipular los caracteres de la cadena
Public Function CuentaPalabras(Texto As String, Palabra As String) As Long
Dim wptr As Long
Dim count As Long
wptr = InStr(Texto, Palabra)
Do Until wptr = 0
count = count + 1
wptr = InStr(wptr + 1, Texto, Palabra)
Loop
CuentaPalabras = count
End Function
Quitar el último carácter de una cadena
Cómo eliminar el último carácter de una cadena.
...
dim Texto as string
Texto = "Hola1";
Texto = Left(Texto, Len(Texto) - 1)
La variable Texto valdrá "Hola"
Reemplazar string en una cadena
La función Replace de Visual Basic reemplaza un string formado por uno o varios caracteres en una cadena por otro string formado por uno o varios caracteres.
Su sintaxis es simple no necesita ejemplos, con la ayuda es suficiente.
Rellenar con ceros a la izquierda
Para rellenar un número con ceros no significativos a la izquierda se puede usar la instrucción Format. Por ejemplo, queremos que en un informe se vea 001 para un campo numérico que tiene el valor 1 Ejemplo para campo de formulario: =Format([NumeroFactura];"000") Ejemplo para código Visual Basic 6: txtNumeroFactura = Format(NumeroFactura,"000") Para otros relleno solo hace falta variar el número de ceros.
Split
Separa un string en varias cadenas dentro de una matriz en función del carácter definido.
...
Ejemplo de la función Split:
Dim matStrings() As String
txtstrings = "Uno,Dos,Tres"
matStrings = Split(txtStrings, ",")
Obtenemos una matriz de Strings con cada uno de los elementos:
matstrings(1) = "Uno"
matstrings(2) = "Dos"
matstrings(3) = "Tres"
Subcadena por delimitadores
Obtener una subcadena (substring) en función de dos delimitadores iguales o diferentes. Se puede utilizar para obtener texto entre paréntesis o guiones, por ejemplo....
Función para obtener una Subcadena por delimitadores
Function absSubStringDelimiter(Text As String, Char1 As String, Char2 As String) As String
Dim pos1 As Integer
Dim pos2 As Integer
pos1 = InStr(1, Text, Char1)
pos2 = InStr(1, Text, Char2)
If pos1 > 0 And pos2 > 0 Then
If pos2 > pos1 Then
absSubStringDelimiter = Trim(Mid(Text, pos1 + 1, (pos2 - pos1 - 1)))
End If
End If
End Function
Fecha: 30-08-2023
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”
César Ramírez
Saludos.
¿Como hacer un instalador de programas ? Algo que grabe algunos archivos predeterminados en algún lugar del disco duro de manera discreta.
Alex Borrás
Para aplicaciones con Access y VBA usé durante muchos años Wise Installation System y me iba perfecto. Aún se puede descargar de Softonic: WISE Installation System para Windows
davier
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
antonia
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)
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)
Alex Borrás
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
Alex Borrás
Eso es bastante sencillo de hacer, pero se debería usar código VBA en el momento de validar los datos.
Deja una respuesta
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
Saludos.
¿Como hacer un instalador de programas ? Algo que grabe algunos archivos predeterminados en algún lugar del disco duro de manera discreta.
Para aplicaciones con Access y VBA usé durante muchos años Wise Installation System y me iba perfecto. Aún se puede descargar de Softonic: WISE Installation System para Windows
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
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)
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
Eso es bastante sencillo de hacer, pero se debería usar código VBA en el momento de validar los datos.