Trucos y ejemplos de VBA para Microsoft Access
18119
page-template-default,page,page-id-18119,bridge-core-1.0.7,ajax_fade,page_not_loaded,,vertical_menu_enabled,side_area_uncovered_from_content,qode-theme-ver-18.2.1,qode-theme-bridge,disabled_footer_top,qode_header_in_grid,wpb-js-composer js-comp-ver-5.0.1,vc_responsive

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.

Contenidos de Microsoft Access VBA

Todos Bucles (2) TableDefs (1) Fechas (3) FileSystem (1) Forms (3) Informes (1) MDB (3) DAO (1) Office (1) Recordset (2) SQL (1) Strings (9) email (1) System (2) Teoría (1) URL (3) IE Object (1)
Campos calculados en informes - Como crear un hipervínculo en un formulario - Cómo obtener el nombre del ordenador o PC - Convención Reddick para nombres de elementos - Convertir minutos a formato Fecha (Date) - Convertir un MDB de Access a Texto - Documentar elementos de Microsoft Access - DoEvents en bucles - Eliminar caracteres especiales de una cadena - Equivalencias PHP - Visual Basic - Excel desde Access - Extensión de un archivo - Extraer el dominio de una URL - Extraer emails de un texto - Filtro y orden de registros de un formulario - ID de un nuevo registro - Ir al final de un campo - Leer el contenido de una URL con Visual Basic - Len: Contar caracteres en una cadena - Listar los campos de una tabla - Minutos a formato HH:NN string - Obtener ID despues de Addnew - Primer y último día de la semana - Quitar el último carácter de una cadena - Reemplazar string en una cadena - Rellenar un campo Hyperlink - Seleccionar un archivo - Split - SQL con apóstrofe - Todos los iconos de Access -

Campos calculados en informes

Control de campos calculados en informes de Access...

Cuando queremos restringir los valores que nos devuelve un informe de Microsoft Access en función del valor de un campo es sencillo, ponemos las condiciones en una consulta que actúe como fuente de informe y ya está. Sin embargo el tema se complica un poco cuando el control lo que queremos realizar en función del valor de un campo que vamos a calcular en la sección Detalle del Report. En este caso podemos hacerlo poniendo un campo de selección en el formulario, por ejemplo el fraTipo que se utiliza en el ejemplo y que pregunta por dos opciones (1.Todos los socios o 2.solo los pendiente de pago). Seguidamente en el evento Detalle_Format incluiremos el siguiente código:
    If Form_CLGI0201Cobros.fraTipo = 2 Then
        If txtPendiente = 0 Then
            Cancel = True
            Exit Sub
        End If
    End If


Como crear un hipervínculo en un formulario

Hay varias formas de crear un hipervínculo en un formulario de Visual Basic y abrir una página Web que te explico en este contenido....

Una muy sencilla es la siguiente:
  • Crear una label en el formulario y en el Caption poner el texto que queramos, la dirección o el nombre de la página que queremos abrir.
  • Cambiar la propiedad Font poniendo la característica de subrayado
  • Cambiar la propiedad ForeColor y ponerle Azul
  • Cambiar la propiedad MouseIcon y buscar un icono típico de Hipervínculo por ejemplo en: C:\Archivos de programa\Microsoft Visual Studio\Common\Graphics\Cursors
  • Cambiar la propiedad MousePointer a 99 (personalizado)
Crear en el formulario el Evento Click y poner una llamada a la API ShellExecute pasando como parámetro la URL que queremos abrir.


Cómo obtener el nombre del ordenador o PC

Permite saber el nombre del PC donde está funcionando la base de datos Access...

Public Function GetComputerName() As String
   Dim sResult As String * 255
   GetComputerNameA sResult, 255
   GetComputerName = Left$(sResult, InStr(sResult, Chr$(0)) - 1)
End Function


Convención Reddick para nombres de elementos

Son un conjunto de normas que te serán de mucha utilidad a la hora de definir todos los elementos de una aplicación desarrollada con Microsoft Access. (Fuente)

Convertir minutos a formato Fecha (Date)

Una sencilla función para convertir minutos a formato hh:nn y así poderlo guardar en un campo cuyo tipo de datos es Date en una tabla de Access. ...

Function ConvertMinutesToDate(Minutos As Integer) As Date
    Dim intHor As Integer
    Dim intMin As Integer
    intHor = Int(Minutos / 60)
    intMin = Minutos - (intHor * 60)
    ConvertMinutesToDate = CDate(intHor & ":" & intMin & ":00")
End Function
Notas: Si lo minutos suman más de un día hay que ajustar la función. Suelo usar la función en aplicaciones que importan tareas, por eso aún no tengo hecho el ajuste de los días pero se puede llegar a realizar.


Convertir un MDB de Access a Texto

Esta es una pequeña utilidad desarrollada con Visual Basic que permite convertir a un fichero de texto una base de datos de Microsoft Access. El proceso crea una subcarpeta donde están las bases de datos y en la misma crea un fichero por cada una de la tablas del MDB. En principio se crean en formato csv pero modificando el parámetro de esta instrucción es posible obtener la información en otros formatos como acFormatActiveXServer, acFormatHTML, acFormatIIS, acFormatRTF, acFormatTXT, acFormatXLS:...

Instrucción:
app.DoCmd.OutputTo acOutputTable, tdf.Name,acFormatTXT, strFolderOutput & "\" & tdf.Name & ".txt"
Hay dos métodos posibles para la exportación el DoCmd.TransferText y el DoCmd.OutputTo, se pueden utilizar cualquiera de los dos. Aquí está el archivo para descargar y debajo el código del formulario (también hay un módulo en el proyecto con 2 funciones complementarias. MDB2txt Código del formulario:
Option Explicit
    Dim app  As Access.Application
    Dim dbs  As DAO.Database
    Dim tdf  As DAO.TableDef
    Dim strMDB2txt  As String
    Dim strSQL      As String
    Dim strFolderOutput As String
    Dim fso         As FileSystemObject

Private Sub Form_Load()
    'Me.Width = 6500
    'Me.Height = 3300
End Sub
Private Sub cmdMDB2txt_Click()
    cdgMDB2txt.DefaultExt = "mdb"
    cdgMDB2txt.ShowOpen
    strMDB2txt = ValidarString(cdgMDB2txt.FileName)
    If strMDB2txt <> "" Then
        txtMDB2txt = strMDB2txt
      Else
        txtMDB2txt = ""
    End If
End Sub
Private Sub cmdCancelar_Click()
    Unload Me
End Sub
Private Sub cmdConvertir_Click()
' Inicio de Proceso
    lblMDB2txt.Caption = "Iniciando proceso ..."
    Set app = New Access.Application
    app.OpenCurrentDatabase strMDB2txt
    Set fso = New FileSystemObject
    Set dbs = OpenDatabase(strMDB2txt)
    strFolderOutput = ArchivoInformacion(strMDB2txt, itxpath) & "\" & Mid(Dir(strMDB2txt), 1, (Len(Dir(strMDB2txt)) - 4))
    If fso.FolderExists(strFolderOutput) = False Then
        fso.CreateFolder strFolderOutput
    End If
' Procesar las Tablas
    For Each tdf In dbs.TableDefs
        GoSub ExportarTabla
    Next
' Cerrar Bases de Datos
    dbs.Close
    Set app = Nothing
    Set fso = Nothing
' Fin de Proceso
    MsgBox "Proceso Finalizado", vbInformation, "Convertir MDB a Texto"
    txtMDB2txt = ""
    lblMDB2txt.Caption = ""
    Exit Sub
ExportarTabla:
    If tdf.Attributes = dbAttachedTable Then Return
    If LCase(Left(tdf.Name, 4)) = "msys" Then Return
    lblMDB2txt.Caption = "Convirtiendo " & tdf.Name
    app.DoCmd.TransferText acExportDelim, "", tdf.Name, strFolderOutput & "\" & tdf.Name & ".csv"
    'app.DoCmd.OutputTo acOutputTable, tdf.Name,acFormatTXT, strFolderOutput & "\" & tdf.Name & ".txt"
    Me.Refresh
    Return
End Sub



Documentar elementos de Microsoft Access

Los elementos de una base de datos Tablas, Formularios, etc. se denominan Documents y se agrupa en Containers. Si te interesa tener en una tabla a todos ellos para hacer tus propios menús, búsquedas o utilidades esta función te lo hace....

Buscar y documentar todos los elementos de Access
Sub ElementosMDBBuscar()
    Dim cnt As DAO.Container
    Dim doc As DAO.Document
    For Each cnt In CurrentDb.Containers
        For Each doc In cnt.Documents
            ElementosMDBDocumentar cnt, doc
        Next
    Next
    MsgBox "Documentación completada"
End Sub
Sub ElementosMDBDocumentar(cnt As DAO.Container, doc As DAO.Document)
    Dim strSQL As String
    Dim rstElementos As DAO.Recordset
    strSQL = "SELECT * FROM ElementosMDB WHERE Container='" & cnt.Name & "' AND Document='" & doc.Name & "'"
    Set rstElementos = CurrentDb.OpenRecordset(strSQL)
    If rstElementos.EOF Then
        rstElementos.AddNew
            rstElementos!Container = cnt.Name
            rstElementos!Document = doc.Name
        rstElementos.Update
    End If
    rstElementos.Close
End Sub


DoEvents en bucles

Mantener el control de un bucle con DoEvents evita que se bloquee Access en bucles largos y podamos recuperar el control del sistema....

En algunas ocasiones en un bucle Do While o For Next largo queremos hacer un display de algún campo para poder seguir la evolución del mismo sin embargo vemos como al poco rato la visualización se detiene y no responde hasta el final, con lo cual da la sensación de que el proceso se ha quedado colgado. Para solucionarlo y mantener la visualización de control en el bucle basta con añadir dentro del mismo la instrucción DoEvents.
Do While 
   ... 
   ... 
   DoEvents
Loop
Sin embargo está comprobado que llamar a DoEvents en cada bucle ralentiza mucho el proceso. En pruebas hechas con Excel VBA una macro puede multiplicar por 4 el tiempo de ejecución. Pôr eso recomienda lanzar cada n ejecuciones del bucle y poner el valor Application.Hecho a False para que no refresque pantalla constantemente.
Application.Echo False
Do While 
   ... 
   ... 
   ind=ind+1
   If ind Mod 100 = 0 Then
       DoEvents
   End If
Loop
Application.Echo True


Eliminar caracteres especiales de una cadena

Función que elimina todos los caracteres especiales de una cadena....

Cómo se puede ver es fácilmente ampliable.
Public Function EliminarCaracteresEspeciales(Texto As String) As String
    Texto = Replace(Texto, "ñ", "N")
    Texto = Replace(Texto, "ñ", "ny")
    Texto = Replace(Texto, "Ñ", "NY")
    Texto = Replace(Texto, "á", "a")
    Texto = Replace(Texto, "é", "e;")
    Texto = Replace(Texto, "í", "i")
    Texto = Replace(Texto, "ó", "o")
    Texto = Replace(Texto, "ú", "u")
    Texto = Replace(Texto, "à", "a")
    Texto = Replace(Texto, "è", "e;")
    Texto = Replace(Texto, "ì", "i")
    Texto = Replace(Texto, "ò", "o")
    Texto = Replace(Texto, "ù", "u")
    Texto = Replace(Texto, "Á", "A")
    Texto = Replace(Texto, "É", "E;")
    Texto = Replace(Texto, "Í", "I")
    Texto = Replace(Texto, "Ó", "O")
    Texto = Replace(Texto, "Ú", "U")
' Dieresis ä
    Texto = Replace(Texto, "ä", "a")
    Texto = Replace(Texto, "ë", "e;")
    Texto = Replace(Texto, "ï", "i")
    Texto = Replace(Texto, "ö", "o")
    Texto = Replace(Texto, "ü", "u")
    Texto = Replace(Texto, "Ä", "A")
    Texto = Replace(Texto, "Ë", "E;")
    Texto = Replace(Texto, "Ï", "I")
    Texto = Replace(Texto, "Ö", "O")
    Texto = Replace(Texto, "Ü", "U")
' Otros
    Texto = Replace(Texto, "&", "And")
    Texto = Replace(Texto, "ã", "a")
    Texto = Replace(Texto, "ç", "c")
    Texto = Replace(Texto, "Ç", "c")
    Texto = Replace(Texto, "´", " ")
    Texto = Replace(Texto, "’", " ")
    Texto = Replace(Texto, "'", " ")
    Texto = Replace(Texto, "ª", " ")
    Texto = Replace(Texto, "º", " ")
    Texto = Replace(Texto, """", " ")
    EliminarCaracteresEspeciales = Texto
End Function


Equivalencias PHP - Visual Basic

Un par de ejemplos de algunas equivalencias entre ambos lenguajes para tratar cadenas....

ACCESSPHP
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


Excel desde Access

Manejo básico de un libro de Excel desde una base de datos de Microsoft Access...

Es necesario antes marcar la referencia a la biblioteca de Excel.
Sub Ejemplo()
    On Error GoTo ErrorSub
    Dim app As Excel.Application
    Dim wkb As Excel.Workbook
    Dim wks As Excel.Worksheet
    Dim row As Excel.Range
    Dim cel As Excel.Range
    Set app = New Excel.Application
    Set wkb = app.Workbooks.Open("D:\alexborras\Downloads\Municipales_201905_1\04_201905_1.xlsx")
    ' Ver todas las hojas del libro abierto (el index empieza en 1)
    For Each wks In wkb.Sheets
        Debug.Print wks.Index & "." & wks.Name
    Next
    ' Seleccionar una hoja
    Set wks = wkb.Sheets(1)
    For Each row In wks.Rows
        Debug.Print wks.Name & ":" & wks.Rows.CountLarge
        For Each cel In row.Cells
            Debug.Print cel.Column & ":" & cel.Value
        Next
    Next
    Debug.Print wks.Name
    Set wks = Nothing
    Set wkb = Nothing
    Set app = Nothing
    Exit Sub
ErrorSub:
    MsgBox Err.Description
End Sub


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
Un ejemplo de uso sería
debug.print ExtraerURL("https://alexborras.com/")[/vb]
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


Filtro y orden de registros de un formulario

Cómo hacer un filtro por un campo y ordenar los registros del formulario...

Form_frmPersonasTareasLista.Filter = "[codigo estado]='PDTE'"
Form_frmPersonasTareasLista.FilterOn = True
Form_frmPersonasTareasLista.OrderBy = "FechaAlta DESC"
Form_frmPersonasTareasLista.OrderByOn = True


ID de un nuevo registro

Cómo saber el ID de un autonumérico recién creado en una tabla. También se busca cómo: Obtener el ultimo id del ultimo registro insertado y obtener ID de la última fila....

Si creamos un nuevo registro en una tabla cuyo índice es un campo autonumérico es posible que necesitemos saber la ID del registro recién creado. Para ello podemos utilizar las siguientes instrucciones:
' Cómo obtener el último valor autonumérico de una clave
rst.Move 0, rst.LastModified
lngID = rst!ID


Ir al final de un campo

Como entrar en un TextBox de Access y que se ponga al final del campo sin seleccionar todo el texto....

Private Sub Observaciones_Click()
    Observaciones.SelLength = 0
    Observaciones.SelStart = Len(Observaciones)
End Sub


Leer el contenido de una URL con Visual Basic

Podemos acceder al contenido de una dirección URL usando el objeto Document....

Podemos acceder al contenido de una dirección URL con las siguientes instrucciones. Pongo dos ejemplos, uno donde se obtiene el título de la página con una propiedad directa del objeto y otra donde se captura el contenido HTML completo del cuerpo de la URL usando el objeto Document.
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
    .Visible = False
    .Navigate URLtxt
    Do While .ReadyState <> 4: DoEvents: Loop
    Debug.Print = .LocationName ' Título de la página
    Debug.Print = .Document.Body.InnerHtml ' Contenido HTML de la página
    .Quit
End With
Set objIE = Nothing


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


Listar los campos de una tabla

Un bucle For Each para listar los campos de una tabla de Access...

Modo resumido
Sub CamposDeTabla()
    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld As DAO.Field
    Set dbs = OpenDatabase("i:intex winbol2000E999car.mdb")
    Set tdf = dbs.TableDefs("CART0001")
    For Each fld In tdf.Fields
        Debug.Print fld.Name
    Next
    Set fld = Nothing
    Set tdf = Nothing
    dbs.Close
End Sub


Minutos a formato HH:NN string

En programas de gestión de tareas nos podemos encontrar con que tenemos que ofrecer un total de minutos que es superior a las 24 horas. Con esta función devolvemos un string con las horas acumuladas y minutos...

Function HorasMinutosString(Minutos As Integer) As String
    Dim intHor As Integer
    Dim intMin As Integer
    intHor = Int(Minutos / 60)
    intMin = Minutos - (intHor * 60)
    HorasMinutosString = Format(intHor, "#00") + ":" + Format(intMin, "00")
End Function


Obtener ID despues de Addnew

Cómo obtener el último valor autonumérico después de un addnew en una tabla....

Si hacemos un Addnew de un registro mediante código VBA de Microsoft Access 2003 y la tabla tiene una clave formado por un ID autonumérico es posible que necesitemos saber cual es el valor que se le ha asignado a ese registro. Las instrucciones para saberlo son las siguientes (remarcadas en azul), suponemos que el campo autonumérico de la tabla se llama ID
Dim rstProyectosTareas As DAO.Recordset
Dim lngID As Long
Set rstProyectosTareas = CurrentDb.OpenRecordset("ProyectosTareas")
rstProyectosTareas.AddNew
rstProyectosTareas![...] = ...
rstProyectosTareas![...] = ...
rstProyectosTareas.Update
' Como obtener el último valor autonumérico de una clave
rstProyectosTareas.Move 0, rstProyectosTareas.LastModified
lngID = rstProyectosTareas!ID
' Fin de como obtener
rstProyectosTareas.Close


Primer y último día de la semana

Como determinar el primer y el último día de la semana en VBA...

El caso es el siguiente, tenemos un formulario de Microsoft Access 2003 con dos campos de fecha Desde/Hasta. Queremos que cuando se abra el formulario automáticamente se visualicen en los campos Desde y Hasta el primer y último día de la semana o del mes según la fecha en que lo hacemos para poder obtener informes en curso. Deberíamos poner el siguiente código en el evento Form_Load()
txtDesdeFecha = Date - Weekday(Date, vbUseSystemDayOfWeek) + 1
txtHastaFecha = Date - Weekday(Date, vbUseSystemDayOfWeek) + 7


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 un campo Hyperlink

Para rellenar un campo del tipo Hyperlink cuando hacemos un add o edit de un resitro se hace de la siguiente forma: rst!CampoHyperlink = "Texto#URL#"

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


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"


SQL con apóstrofe

Cuando la sentencia SQL incluye apóstrofes tendremos problemas si no hacemos de una forma especial. Te lo enseño en este ejemplo....

Por ejemplo con la palabra Ho'oponopono
strSQL = "SELECT * FROM Keywords WHERE KeywordTXT=" & """" & Texto & """"


Todos los iconos de Access

Cómo ver todos los iconos de Microsoft Access...

Con esta secuencia creamos una barras de menús para ver todos los iconos que lleva incorporados Access y desde personalizar podemos copiar y pegar. Comprobado en Access 2000 y 2003
Sub EnumerarIconosAccess()
    Dim cb  As CommandBar
    Dim cb1 As CommandBar
    Dim cbc As CommandBarControl
    Dim cbc1 As CommandBarControl
    Dim cbc2 As CommandBarButton
    Dim cbb As CommandBarButton
    Dim cbx As CommandBarComboBox
    Dim cbp As CommandBarPopup
    Dim cbp1 As CommandBarPopup
    Dim ind1 As Integer
    Dim ind2 As Integer
    For ind1 = 1 To 4
        Set cb = Application.CommandBars.Add("Botones" + Str(ind1))
        For ind2 = ((ind1 - 1) * 1000) + 1 To (ind1 * 1000)
            Set cbc2 = cb.Controls.Add(msoControlButton)
            cbc2.Style = msoButtonIcon
            cbc2.FaceId = ind2
            cbc2.Caption = ind2
            cbc2.Tag = ind2
        Next ind2
    Next ind1
    MsgBox "Barra Creada"
End Sub

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
A %d blogueros les gusta esto: