Académique Documents
Professionnel Documents
Culture Documents
A1
Archivo de ejemplos de Microsoft Excel
Contenido
Formato condicional
Explicación sobre la manera de modificar el formato
aplicado a una celda (fuente, color, etc.) dependiendo de
su valor.
Validación de datos
Se muestra cómo establecer restricciones a los valores
que se pueden introducir en una celda.
Rótulos de gráficos
Una macro que permite insertar rótulos automáticamente
en un gráfico XY (Dispersión).
Repetición de tareas
Ejemplos de código de bucles y una explicación sobre la
manera de modificar el código grabado para repetir tareas
en un rango de celdas o en un rango seleccionado.
Microsoft proporciona ejemplos de procedimientos de Visual Basic for Applications (Visual Basic para Aplicaciones) sólo con propósito
ilustrativo, sin ningún tipo de garantía, explícita o implícita, incluidas entre otras las garantías implícitas de comercialización o de uso para un fin
en particular. Los procedimientos de Visual Basic en este libro de ejercicios se entregan tal cual aparecen ("as is"); Microsoft no garantiza que
se puedan utilizar en todo tipo de situaciones. A pesar de que los ingenieros del Servicio Técnico de Microsoft podrían ayudar a explicar el
funcionamiento de una macro en particular, no modificarán los ejemplos para agregar nuevas funciones, ni tampoco crearán macros como
respuesta a necesidades específicas. Si usted tiene una experiencia limitada en programación, póngase en contacto con algún Microsoft
Solution Provider.
mplos de Microsoft Excel
Contenido
Matrices
Ejemplo de código de macros para mostrar la manera de
transferir el contenido de una matriz a una hoja de cálculo.
Ejemplos de API
Cómo utilizar llamadas API (Interfaz de programación de
aplicaciones) desde el entorno de programación de Microsoft
Excel.
Automatización
Ejemplos de código de macro para mostrar cómo se pueden
automatizar tareas de Microsoft Excel y otras aplicaciones de
Microsoft Office.
sual Basic for Applications (Visual Basic para Aplicaciones) sólo con propósito
cluidas entre otras las garantías implícitas de comercialización o de uso para un fin
ro de ejercicios se entregan tal cual aparecen ("as is"); Microsoft no garantiza que
que los ingenieros del Servicio Técnico de Microsoft podrían ayudar a explicar el
n los ejemplos para agregar nuevas funciones, ni tampoco crearán macros como
experiencia limitada en programación, póngase en contacto con algún Microsoft
Solution Provider.
Funciones de hoja de cálculo
Esta hoja de cálculo contiene ejemplos de fórmulas que puede usar para completar algunas
tareas usuales en hojas de cálculo. Las celdas con fórmulas se muestran en azul. Si desea
ver un ejemplo de fórmula, sitúe el cursor del mouse (ratón) sobre la celda para que aparezca
el comentario o presione ALT+º para cambiar entre presentar valores o fórmulas en la hoja
de cálculo. Para obtener más información acerca de una función, seleccione la celda con la
función y, a continuación, haga clic en el botón Modificar fórmula (=) en la barra de fórmulas.
Otro método para suprimir la presentación de valores de error es usar la opción Formato
condicional. Esta opción permite que la celda muestre distintos formatos según
el contenido de la misma. En el caso de valores de error, el procedimiento sería:
Como resultado, en los valores de error la fuente y el fondo presentarán el mismo color, por lo que
no se mostrará nada.
Para usar esta opción, seleccione una celda dentro de la lista que desea resumir. En el
menú Herramientas seleccione Asistente y, a continuación, Suma condicional. Siga las
instrucciones del asistente
Si estas opciones de menú no están presentes y para obtener información adicional sobre la
la utilización o la instalación del Asistente para búsquedas, utilice el Ayudante de Office y
realice una búsqueda utilizando las palabras "Asistente para búsquedas".
Para usar esta opción, seleccione una celda dentro de la lista que desea resumir. En el menú
Herramientas seleccione Asistente y, a continuación, Suma condicional. Siga las instrucciones
del asistente.
Si los elementos de menú no están presentes y para obtener información adicional sobre la utilización
y la instalación del Asistente para suma condicional, use el Ayudante de Office y realice
una búsqueda de la frase "Asistente para suma condicional".
Si estas opciones de menú no están presentes y, para obtener información adicional sobre la
la utilización o la instalación del Asistente para suma condicional, utilice el Ayudante de Office
y realice un búsqueda utilizando las palabras "Asistente para suma condicional".
Formato condicional
El formato condicional permitie modificar el formato aplicado a las
celdas en función de sus valores. Así se pueden examinar hojas de
cálculo de gran tamaño mucho más rápidamente resaltando las
excepciones. El formato condicional permite aplicar hasta tres
condiciones distintas a una celda.
4
Las celdas H10:H14 contienen tres reglas de formato condicional 7
que cambiarán el formato de estas celdas dependiendo de los texto
valores que se escriban en ellas. 1
15
Para ver la condición que se ha aplicado a las celdas, seleccione la
celda H10 y haga clic en Formato condicional, en el menú
Formato.
8
Validación de datos
La Validación de datos permite establecer restricciones a los valores que se
pueden introducir en una celda. En los siguientes ejemplos se muestran varias
situaciones típicas en las que se puede utilizar la validación de datos.
Para ver los valores de validación de este ejemplo, seleccione la celda H19 y,
a continuación, haga clic en Validación, en el menú Datos.
Valores Y
9
Repetición de tareas
A menudo es necesario repetir un tipo de tarea específica para un grupo de elementos, que pueden
ser celdas, celdas en un rango, hojas de cálculo de un libro o libros en una aplicación.
A pesar de que una macro no puede grabar bucles, se puede grabar la tarea principal y luego,
mediante pequeñas modificaciones en el código, se pueden crear distintos tipos de bucles según las
necesidades del proyecto.
Los ejemplos siguientes se centran en un escenario donde el programador tiene un rango de celdas
con números en la columna A, y dependiendo del valor de la celda, desea cambiar el color de la
celda correspondiente en la columna B.
Sub Macro_Grabada()
Ir al código de ejemplo
'
Macro_Grabada
' Macro grabada el 18/11/98
'
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Sub
Nota: si al grabar seleccionó una celda, puede aparecer en la macro el texto Range("A3").Select. Si
deja esta línea sin modificar, cada vez que ejecute la macro se seleccionará la celda especificada en
el objeto Range. No quite esta línea de la macro si desea seleccionar la celda.
Por último, debido a que se desea desplazar la celda correspondiente una columna hacia la derecha
de la columna A (columna B), se reemplazará la propiedad Selection en el código usando el método
Offset en la celda en la que se aplicará el bucle (celda_en_bucle).
El código resultante será:
Sub Ejemplo_For_Each_Next()
'
' Macro_grabada modificada (adición de código de bucle)
'
For Each celda_en_bucle In Range("A1:A5") Ir al código de ejemplo
If celda_en_bucle.Value > 20 Then For_Each_Next
With celda_en_bucle.Offset(0, 1).Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Next
End Sub
Bucle For…Next
Si conoce el número de veces que desea realizar un bucle en el código, puede usar el bucle
For..Next. En el ejemplo siguiente, si se desea comprobar 10 celdas hacia abajo a partir de la celda
seleccionada, el código será:
Sub Ejemplo_For_Next()
Ir al código de ejemplo
For_Next
For Contador = 0 To 9
If Selection.Offset(Contador, 0).Value > 20 Then
With Selection.Offset(Contador, 1).Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Next
End Sub
En este ejemplo, el objeto Selection se utiliza para que el código no especifique ningún rango y
realice un bucle diez celdas hacia abajo de la celda activa (de 0 a 9). La variable Contador aumenta
progresivamente a medida que avanza el bucle y se puede usar internamente en la estructura del
mismo. Aquí se utiliza como argumento Offset para indicar el número de filas que se desplaza
Selection desde la celda activa. Si al iniciar la macro la celda activa es A1, en la primera vuelta del
bucle, la variable Contador será igual a 0 y se desplazará 0 filas a partir de A1, como se muestra en
el enunciado Selection.Offset(Contador, 0).Value.
Do…Loop
Para establecer cuándo detener un bucle basado en una condición determinada, puede ser
apropiado utilizar Do…Loop. Esta estructura de bucle permite comprobar las propiedades o
condiciones de la variable antes de ejecutar el bucle. En el ejemplo siguiente, el bucle continúa
Nota: existen otros tipos de bucle Do…Loop disponibles, que ofrecen más flexibilidad en
determinadas circunstancias.
Si desea obtener más información y detalles acerca de otras estructuras de bucle, consulte en la
Ayuda del entorno de Visual Basic la palabra bucles.
Trabajar con matrices
La manera utilizada con más frecuencia para transferir el contenido de una matriz a una hoja de
cálculo es mediante un bucle como, por ejemplo, For...Next. Con For...Next podrá indexar en la
matriz y transferir elementos de la matriz a su dirección de destino de una sola vez. El mismo
resultado puede obtenerse sin bucles utilizando la propiedad FormulaArray, del objeto Range, de
Visual Basic para aplicaciones.
En Visual Basic para aplicaciones, la orientación de una matriz unidimensional es horizontal. Como
consecuencia, si el rango de celdas en la hoja de cálculo que va a recibir el contenido de la matriz
tiene la misma orientación, es decir, una sola fila y varias columnas, es posible transferir su
contenido mediante el enunciado FormulaArray. Por ejemplo:
La matriz bidimensional presentada en el ejemplo anterior permite que Visual Basic establezca la
orientación de la matriz como orientación vertical. De este modo, se puede transferir la matriz a
una hoja de cálculo sin utilizar un bucle.
código de ejemplo
Matriz1
código de ejemplo
Matriz2
Ejemplos de API
La interfaz de programación de aplicaciones (Application Programming Interface, API) es una función incluida en un
archivo DLL.
Estas funciones suelen utilizarlas Windows y las aplicaciones pero también puede utilizarlas el usuario final.
Nota: tenga precaución al experimentar con las llamadas API. Guarde su trabajo a menudo para evitar problemas.
Debido a que fueron diseñadas para ser llamadas por el sistema o las aplicaciones, no existe un sistema de
detección de errores.
Esto significa que el usuario puede hacer que el sistema se bloquee o que surgan otros efectos secundarios no
deseados al expermientar con llamadas API.
En los siguientes ejemplos se muestra cómo utilizar las API básicas. Estos ejemplo se han probado con Windows
98.
Hay varias maneras de utilizar estas funciones y depende del programador determinar cuál es la mejor para obtener
los resultados buscados.
En el siguiente ejemplo se utiliza la función GetLogicalDriveStrings para examinar todas las unidades lógicas, que
pueden ser unidades extraíbles, fijas o de CD y unidades de red compartidas.
Option Explicit
Private Declare Function GetLogicalDriveStrings _
Lib "kernel32" Alias "GetLogicalDriveStringsA" _
(ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long
Sub Obtener_unidades_logicas()
Dim DrvString As String Ir al código de ejemplo
Dim TotDrvs As Long Obtener_unidades_logicas
Dim Contador As Integer
Option Explicit
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) _
As Long
Sub Obtener_resolucion()
End Sub
Con el siguiente código se obtiene el nombre del usuario que inició la sesión actual.
Option Explicit
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long
Sub Nombre_de_usuario()
Ir al código de ejemplo
Dim lpBuff As String * 25
Nombre_de_usuario
Dim ret As Long, UserName As String
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
MsgBox UserName
End Sub
Sub Nombre_corto()
Dim LongStr As String, ShortStr As String Ir al código de ejemplo
Dim lStrLen As Long, lRet As Long Nombre_corto
En el siguiente ejemplo de código se muestra cómo utilizar la función GetComputerName para mostrar el nombre
del equipo.
Option Explicit
Private Declare Function GetComputerName Lib "kernel32" _
Alias "GetComputerNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long
Sub Nombre_del_equipo()
Dim Comp_Name_B As String * 255
Dim Comp_Name As String
Ir al código de ejemplo
GetComputerName Comp_Name_B, Len(Comp_Name_B)
Nombre_del_equipo
'pero el final de la cadena siempre era una cadena
'terminada en cero por lo que podemos usar la función
'Chr(0) para buscar el final
Comp_Name = Left(Comp_Name_B, InStr(Comp_Name_B, Chr(0)))
'y devolver únicamente el nombre del equipo
MsgBox Comp_Name
End Sub
El siguiente código muestra cómo buscar el espacio libre en un disco duro así como el tamaño total de la unidad.
Option Explicit
Private Declare Function GetDiskFreeSpace Lib "KERNEL32.DLL" _
Alias "GetDiskFreeSpaceA" (ByVal lpRoot As String, _
dwSectors As Long, _
dwBytes As Long, _
dwFreeClusters As Long, _
dwTotalClusters As Long) As Long
Sub Espacio_libre_en_disco()
Dim f As Long, iSectors As Long
Dim iTotal As Long, rTotal As Long
Dim iFree As Long, rFree As Long Ir al código de ejemplo
Dim iBytes As Long Espacio_libre_en_disco
Dim sName As String, s As String
sName = "C:\"
f = GetDiskFreeSpace(sName, iSectors, iBytes, iFree, iTotal)
rFree = iSectors * iBytes * CDbl(iFree)
rTotal = iSectors * iBytes * CDbl(iTotal)
If f Then
s = sName
s = s & " dispone de " & Format(rFree, "#,###,###,##0")
s = s & " bytes libres de un total de " & Format(rTotal, "#,###,##0") _
& " bytes"
End If
MsgBox s
End Sub
Option Explicit
Declare Function GetSystemDirectory Lib "kernel32" _
Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, _
ByVal nSize As Long) As Long
En el siguiente ejemplo de código se consulta al sistema para comprobar si existen dispositivos capaces de reproducir
archivos WAV.
Option Explicit
Declare Function waveOutGetNumDevs Lib "winmm" () As Long
Sub Num_de_disps()
Ir al código de ejemplo
Dim i As Long Num_de_disps
i = waveOutGetNumDevs()
If i > 0 Then ' Al menos hay un dispositivo.
MsgBox "Pueden reproducirse datos de onda"
Else
MsgBox "No pueden reproducirse datos de onda"
End If
End Sub
En el siguiente ejemplo de código se muestra cómo hacer que Microsoft Excel esté " siempre visible". Así se
impide que otras aplicaciones aparezcan en la pantalla por encima de Microsoft Excel.
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
Global Const HWND_TOPMOST = -1
Global Const HWND_NOTOPMOST = -2 Ir al código de ejemplo
Siempre_visible
Sub Siempre_visible()
Dim WinHnd As Long, SUCCESS As Long
WinHnd = FindWindow("xlmain", Application.Caption)
SUCCESS = SetWindowPos(WinHnd, HWND_TOPMOST, 0, 0, 0, 0, Flags)
'Esta línea se insertó sólo para que Excel vuelva a funcionar
'normalmente a los 20 segundos
Application.OnTime Now + TimeValue("00:00:20"), "No_siempre_visible"
End Sub
Sub No_siempre_visible()
Dim WinHnd As Long, SUCCESS As Long
WinHnd = FindWindow("xlmain", Application.Caption)
SUCCESS = SetWindowPos(WinHnd, HWND_NOTOPMOST, 0, 0, 0, 0, Flags)
End Sub
de reproducir
Programar con eventos
Con frecuencia los programadores necesitan que un evento desencadene una macro para ejecutar una tarea.
Microsoft Excel 2000 ofrece la posibilidad de realizar esta acción. Los eventos están siempre asociados con
objetos, como puede ser el caso de una hoja de cálculo o un libro. En este ejemplo sólo se mencionarán
algunos de los eventos disponibles y se usará un cuadro de mensajes como relleno para demostrar dónde
puede ir el código. Para obtener más información acerca de eventos, haga clic en el Ayudante desde el Editor
de Visual Basic y use el nombre del objeto y la palabra "eventos" como palabras clave (por ejemplo, eventos
de hoja de cálculo).
BeforeDoubleClick
Un tipo de evento muy utilizado es BeforeDoubleClick en una hoja de cálculo. Un ejemplo sencillo puede
ser:
Este evento se desencadenará cada vez que el usuario haga doble clic en una celda de la hoja de cálculo. El
parámetro Target se incorpora a la macro para que el programador sepa en qué celda se hizo doble clic. El
argumento Cancel tiene un valor predeterminado de False pero se puede cambiar a True en el código. Al
establecer Cancel como True se cancelará la acción predeterminada para el evento. En este caso, la acción
predeterminada al hacer doble clic en una celda es cambiar al modo de edición para esa celda. Debido a que
Cancel está establecido como True, esto no ocurrirá. Si desea obtener la acción predeterminada, quite la
línea Cancel=True.
Change
Otro evento de gran utilidad en una hoja de cálculo, es Change. Se desencadena cada vez que el usuario
escribe un valor nuevo en una celda.
Nota: este evento no ocurrirá si la hoja acaba de ser recalculada. Existe otro evento denominado Calculate
que funciona con hojas de calculo recalculadas.
BeforeClose
Un evento útil relacionado con libros es BeforeClose. Se puede utilizar este tipo de eventos para realizar
tareas de limpieza antes de guardar o cerrar un archivo.
En este ejemplo, se pide al usuario que cierre el archivo independientemente de si lo guardó previamente o
no.
Usar eventos con el objeto Application
Antes de usar eventos con el objeto Application puede crear un nuevo módulo de clase y declarar un objeto
del tipo Application con la palabra clave WithEvents. Por ejemplo, suponga que se crea un nuevo módulo de
clase denominado EventClassModule con el siguiente código:
Después de declarar los eventos del nuevo objeto, aparecerá la lista desplegable de Object, con el objeto
incluido en el módulo de clase. A continuación puede escribir los procedimientos para el nuevo objeto. Al
seleccionar el nuevo objeto en el cuadro Object, los eventos válidos para ese objeto se presentarán en el
cuadro de lista desplegable Procedure.
Antes de ejecutar los procedimientos debe conectar el objeto declarado en el módulo de clase con el objeto
Application. Puede utilizar el siguiente código con cualquier módulo.
Sub InitializeApp()
Set X.App = Application
End Sub
Después de ejecutar el procedimiento IniciarAp, el objeto App en el módulo de clase apuntará al objeto
Aplicación de Microsoft Excel y los procedimientos del evento se ejecutarán cuando el evento ocurra.
MICROSOFT ACCESS
Este ejemplo devuelve la ubicación de las bases de datos de muestra de Microsoft Access.
Sub MS_Access()
'Para ejecutar esta macro, haga clic en Referencias, en el menú Herramientas,
'y seleccione las bibliotecas de objetos de Microsoft Access 9.0.
Dim AccDir As String
Dim acc As Object
'Crea una sesión de Microsoft Access Ir al código de
Set acc = CreateObject("access.application") automatización
'Devuelve la ruta de acceso para msaccess.exe MS_Access
AccDir = acc.SysCmd(Action:=acSysCmdAccessDir)
'Muestra la ruta de acceso
MsgBox "MSAccess.exe está ubicado en " & AccDir
'Libera espacio de disponibilidad variable
Set acc = Nothing
End Sub
MICROSOFT WORD
Este ejemplo copia el gráfico desde la hoja Rótulos de gráficos a un documento nuevo de Microsoft Word.
Sub MS_Word()
Dim wd As Object
'Crea una sesión de Microsoft Word
Set wd = CreateObject("word.application")
'Copia el gráfico en la hoja Rótulos de gráficos
Worksheets("Rótulos de gráficos").ChartObjects(1).Chart.ChartArea.Copy
'Hace visible el documento
wd.Visible = True
'Activa MS Word Ir al código de
AppActivate wd.Name automatización
With wd MS_Word
'Crea un documento nuevo en Microsoft Word
.Documents.Add
'Inserta un párrafo
.Selection.TypeParagraph
'Pega el gráfico
.Selection.PasteSpecial link:=True, DisplayAsIcon:=False, Placement:=wdInLine
End With
Set wd = Nothing
End Sub
MICROSOFT POWERPOINT
Este ejemplo copia el gráfico desde Rótulos de gráficos a una nueva presentación de Microsoft PowerPoint.
Sub MS_PowerPoint()
'Para ejecutar esta macro, haga clic en Referencias, en el menú Herramientas,
'y seleccione las bibliotecas de objetos de Microsoft Powerpoint 9.0.
Dim ppt As Object, pres As Object
'Crea una sesión Microsoft PowerPoint
Set ppt = CreateObject("powerpoint.application") Ir al código de
automatización
'Copia el gráfico en la hoja Rótulos de gráficos
MS_Powerpoint
Worksheets("Rótulos de gráficos").ChartObjects(1).Copy
'Hace visible PowerPoint
ppt.Visible = True
'Activa PowerPoint
AppActivate ppt.Name
'Abre un documento nuevo en Microsoft PowerPoint
Set pres = ppt.Presentations.Add
'Agrega una diapositiva
pres.Slides.Add 1, ppLayoutBlank
'Pega el gráfico
ppt.ActiveWindow.View.Paste
Set ppt = Nothing
End Sub
MICROSOFT OUTLOOK
Este ejemplo crea y agrega información en una tarea nueva de Outlook. Ejecute Outlook y haga clic en Tareas en
la barra de Outlook para ver la nueva tarea.
NOTA: La tarea puede demorar unos minutos en aparecer.
Sub MS_Outlook()
'Para ejecutar esta macro, haga clic en Referencias, en el menú Herramientas,
'y seleccione las bibliotecas de objetos de Microsoft Outlook 9.0.
Dim ol As Object, myItem As Object
'Crea una sesión de Microsoft Outlook Ir al código de
Set ol = CreateObject("outlook.application") automatización
'Crea una tarea MS_Outlook
Set myItem = ol.CreateItem(olTaskItem) Automation Code
'Agrega información a la nueva tarea
With myItem
.Subject = "Nueva tarea de VBA"
.Body = "Esta tarea se creo desde Microsoft Excel mediante la Automatización"
.NoAging = True
.Close (olSave)
End With
'Quita el objeto de la memoria
Set ol = Nothing
End Sub
Objetos de datos ActiveX (ADO)
Los objetos de datos ActiveX (ADO) permiten manipular directamente bases de datos. En
este libro se incluyen varios ejemplos que muestran varias de las tareas más comunes que
se realizan con bases de datos.
Sub RetrieveISAMdata()
'' NOTA: Para utilizar esta subrutina, es necesario crear Ir al código de ejemplo
''' una referencia a la versión más reciente Recuperar datos ISAM
''' de la siguiente biblioteca:
''
'' Biblioteca de objetos de datos ActiveX de Microsoft
With conn
'Asigna la cadena de conexión al objeto de conexión.
.ConnectionString = "DRIVER={Microsoft dBase Driver (*.dbf)};" & _
"DBQ=" & PathToDatabase & ";" & _
"DefaultDir=" & PathToDatabase & "\"
' Abre la conexión
.Open strConn
End With
With rst
' Conecta este conjunto de registros a la conexión abierta anteriormente.
.ActiveConnection = conn
' Recupera todos los registros de la tabla Customer.
.Open "SELECT * FROM customer"
End With
' Agrega una nueva hoja de cálculo a este libro
Set NewBook = Workbooks.Add
' Examina todos los campos y devuelve sus nombres a la hoja de cálculo.
For i = 0 To rst.Fields.Count - 1
NewBook.Sheets(1).Range("a1").Offset(0, i).Value = rst.Fields(i).Name
Next i
' Copia el conjunto de registros a la nueva hoja de cálculo.
NewBook.Sheets(1).Range("a2").CopyFromRecordset rst
En este ejemplo se utiliza ADO para crear una consulta basada en dos tablas de la base de
datos neptuno.mdb. Para ello es necesario tener instalado el archivo neptuno.mdb en su
equipo.
Sub RetrieveAccessData()
'' NOTA: Para utilizar esta subrutina, es necesario crear
''' una referencia a la versión más reciente
'' de la siguiente biblioteca:
''
'' Biblioteca de objetos de datos ActiveX de Microsoft
'Puede utilizar los símbolos "_" y "&" para dividir una mísma línea de código
'en dos líneas. Ambas líneas se ejecutarán como si fueran una sola.
Nsql = "SELECT DISTINCTROW Categorías.NombreCategoría, " _
& "Productos.NombreProducto, Productos.CantidadPorUnidad, Productos.PrecioUnidad "
Njoin = "FROM Categorías INNER JOIN Productos ON Categorías.IdCategoría = " _
& "Productos.IdCategoría "
Ncriteria = "WHERE ((([Productos].Suspendido)=No)" _
& "AND (([Productos].UnidadesEnExistencia)>20));"
' Crea un nuevo objeto Recordset.
Set rst = New ADODB.Recordset
With rst
' Conecta este conjunto de registros a la conexión abierta.
.ActiveConnection = conn
' Recupera todos los registros de la tabla Customer.
.Open Nsql & Njoin & Ncriteria, conn, adOpenDynamic, adLockBatchOptimistic
End With
En este ejemplo se muestran las tablas de la base de datos de Access Neptuno.mdb. Para
ello es necesario que el archivo Neptuno.mdb esté instalado en el equipo.
Sub ListTables()
''' NOTA: Para utilizar esta subrutina, es necesario crear
''' una referencia a la versión más reciente
''' de la siguiente biblioteca:
''
'' Biblioteca de objetos de datos ActiveX de Microsoft
En este ejemplo se muestran las tablas de la base de datos de Access Neptuno.mdb. Para
ello es necesario que el archivo Neptuno.mdb esté instalado en el equipo.
Sub ListFields()
''' NOTA: Para utilizar esta subrutina, es necesario crear
''' una referencia a la versión más reciente
''' de la siguiente biblioteca:
''
'' Biblioteca de objetos de datos ActiveX de Microsoft
En este ejemplo se agrega una nueva tabla a la base de datos neptuno.mdb. A continuación,
la subrutina rellena la tabla con los datos que se encuentran en las celdas S1:V30 de esta
hoja de cálculo. Para ello es necesario que el archivo neptuno.mdb esté instalado en el
equipo.
Sub CreateTable()
''' NOTA: Para utilizar esta subrutina, es necesario crear
''' una referencia a la versión más reciente
''' de la siguiente biblioteca:
''
'' Biblioteca de objetos de datos ActiveX de Microsoft
'' Ext. Microsoft ADO 2.5 para DDL y seguridad
With conn
' Establece el proveedor OleDB para la conexión.
.Provider = "Microsoft.JET.OLEDB.4.0"
' Abre una conexión a Neptuno.mdb.
.Open Application.Path & "\samples\neptuno.mdb"
End With
With tbl
' Asigna un nombre a la nueva tabla.
.Name = "Tabla_de_ventas"
' Asigna un nombre a las columnas de la nueva tabla.
With .Columns
.Append "Nombre"
.Append "Región"
.Append "Producto"
' La columna Sales debe ser de tipo de datos "Moneda".
.Append "Ventas", adCurrency
End With
End With
rst.Close
Set tbl = Nothing
Set cat = Nothing
conn.Close
End Sub
En este ejemplo se muestra como capturar y devolver información importante sobre los
errores que puedan recibirse al ejecutar código de ADO.
Sub Trap_ADO_Errors()
''' NOTA: Para utilizar esta subrutina, es necesario crear
''' una referencia a la versión más reciente
''' de la siguiente biblioteca:
''
'' Biblioteca de objetos de datos ActiveX de Microsoft
Ir al código de ejemplo
Recuperar datos ISAM
teriormente.
r al código de ejemplo
cuperar datos de Access
ea de código
os.PrecioUnidad "
egoría = " _
tchOptimistic
Ir al código de ejemplo
Mostrar tablas
Ir al código de ejemplo
Mostrar campos
Ir al código de ejemplo
Crear una tabla
Ir al código de ejemplo
Capturar errores de ADO
Nombre Región Producto Ventas
No modifique Carlos Este Manzanas $759
Carlos Este Bananas $707
Se utiliza para Carlos Este Peras $188
los ejemplos Carlos Este Naranjas $121
que se muestran Juan Sur Bananas $689
Juan Sur Manzanas $244
Juan Sur Peras $962
Ana Sur Manzanas $732
Ana Sur Peras $908
Ana Sur Naranjas $755
Ana Sur Bananas $30
Carmen Este Bananas $979
Carmen Este Manzanas $123
Carmen Este Peras $21
Carmen Este Naranjas $799
Elena Sur Naranjas $244
Elena Sur Bananas $516
Elena Sur Manzanas $562
Elena Sur Peras $190
Pablo Norte Peras $300
Pablo Norte Naranjas $704
Pablo Norte Bananas $785
Pablo Norte Manzanas $527
Julia Norte Peras $513
Julia Norte Naranjas $800
Julia Norte Bananas $138
Julia Norte Manzanas $430