Exportar de Excel a Access mediante formulario de vba
En esta ocasión presento un proyecto que puede dar pie a crear otros más elaborados, dependiendo de la necesidad.
El proyecto realiza la captura de datos mediante un formulario diseñado en vba, para así evitar que los usuarios puedan modificar celdas, además emula a una aplicación de escritorio, ya que oculta la aplicación de Excel, dejando a la vista sólo el formulario.
Identificación de usuario
Mediante un formulario con un ComboBox, se elige el usuario deseado, mismo que será guardado en la base de datos.
Imagen del formulario
Código del formulario
'Convierte a mayúsculas el texto ingresado Private Sub cmbAsesores_Change() Combo1 = UCase(cmbAsesores) cmbAsesores = Combo1 End Sub ':: 'Guarda el nombre de usuario elegido y lanza el formulario Private Sub CommandButton1_Click() If cmbAsesores.Value = "" Then MsgBox "Debes elegir tu nombre" Exit Sub Else Sheets("Hoja1").Range("Asesor") = cmbAsesores.Value frmCaptura.lblAsesor = ("Asesor: " & Sheets("Hoja1").Range("Asesor").Value) Unload Me End If frmCaptura.Show showmodal = True End Sub ':: Private Sub CommandButton2_Click() Unload Me End Sub ':: 'Llena los Combos Private Sub UserForm_Activate() Application.Visible = False Me.cmbAsesores.RowSource = "lstAsesores" cmbAsesores.SetFocus End Sub ' 'Lanza un MsgBox cuando cierras el formulario. Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = vbFormControlMenu Then Cancel = True MsgBox "Por favor, elige tu nombre", vbInformation, "BOTON ANULADO" End If End Sub
Ingreso de datos
El ingreso de los datos se realiza mediante un formulario diseñado en vba, el cual al recibir los datos, los mismo serán enviado a una base de datos de Access, alojada en la misma carpeta del archivo.
Imagen del formulario
El archivo adjunto contiene todo el código, por lo que lo podrás consultar al descargarlo.
También puedes consultar Conectar Excel a Access, MySql y SQL
Hola Sergio,
Muchas gracias por el ejemplo pero tengo una duda, tome el ejemplo y lo modifique para poder agregar a una base de datos de clientes para tomar esos dartos y hacer facturas.
Hice una base de datos de access llamada facturas y una tabla llamada clientes,y no uso la ventana principal de seleccionar asesor solo la de captura. Tengo el siguiente problema : al correr la ventana de captura se ejecuta correctamente al terminar de capturar y dar click en el boton de alta me aparece un msgbox con la palabra erro y no me pasa la informacion ala base de datos. Si me pudieras ayudar de favor seria excelente.
Adjunto codigo de formulario capturar:
Rem Codigo tomado de:
Rem http://www.erlandsendata.no/english/index.php?d=envbadacexportado
Rem Usado y modificado por Sergio A Campos H
‘
‘Option Explicit
Private Declare Function FindWindow Lib “user32” Alias “FindWindowA” (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function DrawMenuBar Lib “user32” (ByVal hWnd As Long) As Long
Private Declare Function SetWindowLong Lib “user32” Alias “SetWindowLongA” (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib “user32” Alias “GetWindowLongA” (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const GWL_STYLE As Long = (-16)
Private Sub UserForm_Initialize()
Dim lngMyHandle As Long, lngCurrentStyle As Long, lngNewStyle As Long
If Application.Version < 9 Then
lngMyHandle = FindWindow("THUNDERXFRAME", Me.Caption)
Else
lngMyHandle = FindWindow("THUNDERDFRAME", Me.Caption)
End If
lngCurrentStyle = GetWindowLong(lngMyHandle, GWL_STYLE)
lngNewStyle = lngCurrentStyle Or WS_MINIMIZEBOX ' Or WS_MAXIMIZEBOX
SetWindowLong lngMyHandle, GWL_STYLE, lngNewStyle
End Sub
'
Private Sub CommandButton1_Click()
Unload Me
Application.Visible = True
End Sub
Private Sub CommandButton2_Click()
On Error GoTo fin
Dim cn As ADODB.Connection, rs As ADODB.Recordset, n As Long
Dim nfila As String
'
If txtRfc = "" Or txtrsocial = "" Or txtDomicilio = "" Or txtColonia = "" Or txtCiudad = "" Or txtEstado = "" Or txtCp = "" Then
MsgBox "No se puede continuar. Algunos datos obligatorios no pueden estar en blanco."
txtRfc.SetFocus
Exit Sub
End If
'
Set cn = New ADODB.Connection
cn.Open "provider=microsoft.jet.oledb.4.0; " & "data source=" & ThisWorkbook.Path & "facturacion.mdb;"
Set rs = New ADODB.Recordset
rs.Open "Clientes", cn, adOpenKeyset, adLockOptimistic, adCmdTable
'
With rs
.AddNew
.Fields("RFC") = Me.txtRfc.Value
.Fields("Razon Social") = Me.txtrsocial.Value
.Fields("Domicilio") = Me.txtDomicilio.Value
.Fields("Colonia") = Me.txtColonia.Value
.Fields("Estado") = Me.txtEstado.Value
.Fields("Ciudad") = Me.txtCiudad.Value
.Fields("Codigo Postal") = Me.txtCp.Value
End With
'
With rs
.AddNew
.Fields("RFC") = Me.txtRfc.Value
.Fields("Razon Social") = Me.txtrsocial.Value
.Fields("Domicilio") = Me.txtDomicilio.Value
.Fields("Colonia") = Me.txtColonia.Value
.Fields("Estado") = Me.txtEstado.Value
.Fields("Ciudad") = Me.txtCiudad.Value
.Fields("Codigo Postal") = Me.txtCp.Value
End With
'
Set rs = Nothing
cn.Close
Set cn = Nothing
'
MsgBox prompt:="Los datos fueron enviados correctamente", Buttons:=vbOKOnly, Title:="DATOS GUARDADOS"
'
txtRfc = ""
txtrsocial = ""
txtDomicilio = ""
txtColonia = ""
txtEstado = ""
txtCiudad = ""
txtCp = ""
'
Me.txtRfc.SetFocus
Exit Sub
fin:
Application.Visible = True
MsgBox "Error"
End Sub
'
Private Sub txtRfc_Change()
Text = UCase(txtRfc)
txtRfc = Text
End Sub
Private Sub txtrsocial_Change()
Text = UCase(txtrsocial)
txtrsocial = Text
End Sub
Private Sub txtDomicilio_Change()
Text = UCase(txtDomicilio)
txtDomicilio = Text
End Sub
Private Sub txtColonia_Change()
Text = UCase(txtColonia)
txtColonia = Text
End Sub
Private Sub txtEstado_Change()
Text = UCase(txtEstado)
txtEstado = Text
End Sub
Private Sub txtCiudad_Change()
Text = UCase(txtCiudad)
txtCiudad = Text
End Sub
Private Sub txtCp_Change()
Text = UCase(txtCp)
txtCp = Text
End Sub
Muchas Gracias Saludos!
Antes que nada, te comento que hizo falta complentar el código para que muestro el error más claro:
En la línes que muestra el error, sólo hay que dejarla así:
MsgBox “Error: ” & Err.Description
Una opción puede ser que los datos que ingresar en el formulario son de tipos distintos a los que tienes en los campos de la base de Access, por ejemplo, si en el Text hora ingresas un dato diferente a una hora, te mostrará el error.
Otra opción es que necesites habilitarle la siguiente referencia dentro del edito de VBA, en el menú Herramientas > Referencias…: Microsoft ActiveX Data Object 2.5 Library.
Con esto debe funcionar.
Hola Sergio muchas gracias por la respuesta, ya hice los siguiente complete la liena y agrege la referencia yo estaba usando la versio 2.1. Pero ahora al ejecutar el formulario y darle click al boton de alta me marca que no se ha definido sub o funtion en referencia a la linea que agrege y me subraya ”& esto en
MsgBox “Error: ”& Err.Description
Gracias de nuevo y una disculpa por tanto gorro.
Saludos!
Adrian Campos.
Y si no incluyes esa línea ya no te genera el error?
Tienes manera de publicar tu archivo?
A proposito estoy usando Excel 2003
Muchas Gracias
Saludos!
Adrian Campos.
Hola Sergio,
No si borro esa linea se queda como pasmado y no hace nada. En este link esta el archivo y la base de datos que estoy usando.
https://skydrive.live.com/redir.aspx?cid=ce3f88c16f58568d&resid=CE3F88C16F58568D!533&parid=CE3F88C16F58568D!415
https://skydrive.live.com/redir.aspx?cid=ce3f88c16f58568d&resid=CE3F88C16F58568D!532&parid=CE3F88C16F58568D!415
Si no es mucha molestia quisiera ver si me puedes ayudar con una modificacion de la macro que muestras aqui:http://exceleinfo.wordpress.com/2010/02/18/macro-eliminar-repetidos/
Lo que yo quiero hacer es que tengo una base de datos en una hoja de excel con los datos para facturacion de clientes. y tengo unos formularios para dar de alta clientes. Para lo que quiero usar esta macro es para qu al momento de dar de alta los datos del cliente, me diga si ya existe ese registro a traves del registro del RFC que esta en la columna 1 y me muestre un mensaje de que el registro ya existe y se borre el registro que se introdujo.
Pero lo que pasa es que de la forma que lo hices, al introducir los datos si repito un registro de RFC me envia un mensaje de registro repetido pero en vez de borrar el registro nuevo me borra el que ya estaba y el que acabo de introducir lo deja en la tabla.
El archivo esta en este link:
https://skydrive.live.com/redir.aspx?cid=ce3f88c16f58568d&resid=CE3F88C16F58568D!534&parid=CE3F88C16F58568D!415
Muchas Gracias!
Saludos!
Adrian Campos
Para el caso de la exportación a Access tienes no cuadran los nombres de las columnas que tienes en Access, principalmente el del Código postal.
Para el caso de los RFC repetido, incluye el siguiente código dentro del módulo del formulario de Alta de clientes:
Private Sub txtrfc_Change()
Repetido = Application.WorksheetFunction.CountIf(Range(“B:B”), Me.txtrfc.Value)
If Repetido = 1 Then
MsgBox “El RFC ” & Me.txtrfc.Value & ” ya está en la lista”
Me.txtrfc.Value = “”
Else
End If
End Sub
Hola Sergio,
Muchisimas gracias por la ayuda ya funcionaron ambos casos.
Excelente Blog.
Saludos!!
Adrian Campos.
Sergio,
Me podrias ayudar con una ultima consulta. Que elementos tendria que usar para hacer el proceso inverso en la base de datos de access, y por ejemplo sacar todos los campos de determinad RFC, para poder poner cada campo en una celda de excel etc.
Para realizar esa acción necesitas conocimientos básicos de SQL, ya que se realizaría la consulta mediante ese lenguaje.
Una opción es realizarlo mediante el menú Datos y elegir Consulta desde Microsoft Query. Otra opción es ver el código de la siguiente página http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/466-vba-importar-access-a-excel.htm y adecuarlo a tus necesidades.
Perfecto le voy a dar una revisada.
Muchas Gracias!
Muy bueno. He tomado varias cosillas de tus macros. Me gustaron. Saludos.
Que bueno que te han sido de utilidad.
Buen dia
Alguno de ustedes me podrian ayudar con un formulario que estoy realizando y tome el mismo codigo de este blogs y ahora me sale cuando ingreso todos los datos error
Gracias agradezco su colaboracion
Private Sub CommandButton1_Click()
On Error GoTo fin
Dim cn As ADODB.Connection, rs As ADODB.Recordset, n As Long
Dim nfila As String
‘
If txtCuenta = “” Or txtOrden = “” Or txtSerialretirado = “” Or txtSerialinstalado = “” Or txtFecha = “” Or txtNotas = “” Or txtDiagnostico = “” Or cmbSupervisor = “” Or cmbTecnico = “” Or cmbMretirada = “” Or cmbMinstalada = “” Then
MsgBox “No se puede continuar. Algunos datos obligatorios no pueden estar en blanco.”, vbCritical, “Atención Telefónica”
cmbDía.SetFocus
Exit Sub
End If
‘
Set cn = New ADODB.Connection
cn.Open “provider=microsoft.jet.oledb.4.0; ” & “data source=” & ThisWorkbook.Path & “Equipos.mdb;”
Set rs = New ADODB.Recordset
rs.Open “Datos”, cn, adOpenKeyset, adLockOptimistic, adCmdTable
‘
With rs
.AddNew
.Fields(“cuenta”) = Me.txtCuenta.Value
.Fields(“orden”) = Me.txtOrden.Value
.Fields(“serialretirado”) = Me.txtSerialretirado.Value
.Fields(“serialinstalado”) = Me.txtSerialinstalado.Value
.Fields(“fecha”) = Me.txtFecha.Value
.Fields(“notas”) = Me.txtNotas.Value
.Fields(“diagnostico”) = Me.txtDiagnostico.Value
.Fields(“supervisor”) = Me.cmbSupervisor.Value
.Fields(“tecnico”) = Me.cmbTecnico.Value
.Fields(“marcaretirada”) = Me.cmbMretirada.Value
.Fields(“marcainstalada”) = Me.cmbMinstalada.Value
End With
‘
With rs
.AddNew
.Fields(“cuenta”) = Me.txtCuenta.Value
.Fields(“orden”) = Me.txtOrden.Value
.Fields(“serialretirado”) = Me.txtSerialretirado.Value
.Fields(“serialinstalado”) = Me.txtSerialinstalado.Value
.Fields(“fecha”) = Me.txtFecha.Value
.Fields(“notas”) = Me.txtNotas.Value
.Fields(“diagnostico”) = Me.txtDiagnostico.Value
.Fields(“supervisor”) = Me.cmbSupervisor.Value
.Fields(“tecnico”) = Me.cmbTecnico.Value
.Fields(“marcaretirada”) = Me.cmbMretirada.Value
.Fields(“marcainstalada”) = Me.cmbMinstalada.Value
End With
‘
Set rs = Nothing
cn.Close
Set cn = Nothing
‘
MsgBox prompt:=”Los datos fueron enviados correctamente”, Buttons:=vbOKOnly, Title:=”DATOS EXPORTADOS”
‘
txtCuenta = “”
txtOrden = “”
txtSerialretirado = “”
txtSerialinstalado = “”
txtFecha = “”
txtNotas = “”
txtDiagnostico = “”
cmbSupervisor = “”
cmbTecnico = “”
cmbMretirado = “”
cmbMinstalada = “”
‘
Me.cmbDia.SetFocus
Exit Sub
fin:
Application.Visible = True
MsgBox “Error”
End Sub
link del ejemplo muerto,subelo de nuevo please!!
Que tal.
Gracias por la observación. Ya puedes descargar el ejemplo.
Hola amigo aun no puedo bajar el ejemplo ?
me pasara a mi no mas?
no me carga nunca la pagina de skidrive
saludos…
https://skydrive.live.com/?cid=4509feb32392c17c&id=4509FEB32392C17C%212092
Utiliza este link
http://dl.dropbox.com/u/57898824/EXCELeINFO%20-%20Excel%20a%20Access%20mediante%20form%20de%20vba.zip
Gracias master te pasaste ,una ultima pregunta donde podria crear un tema sobre una aplicacion que quiero hacer con execel y acces ,para que me orienten?
saludos.. y gracias por el ejemplo…–
En la comunidad de Microsoft encontrarás excelente apoyo en tus dudas sobre Excel, aunque te sugiero que si buscas ayuda, no busques quién te haga el proyecto, en todo caso, encontrarás excelente orientación. http://answers.microsoft.com/es-es/office/forum/excel
Buenas noches
Como siempre, estoy contento de ver los ejemplos que expone y en verdad me ayudan a aprender mas, sin embargo, me preguntaba como se haria para enviar la informacion de un listbox con 5 o 8 columnas y que en la primera columna de la base de datos access, se coloque segun la cantidad de itemns en la lista el numero de control con el cual se registra la operacion..?
en verdad seria de gran ayuda lo que puede suministrar.
Mis respetos.
Buenas tardes David:
Hay publicado un artículo en el que puedes pasar datos de Excel a Access, pero en lugar de ser un formulario, es una tabla de Excel, lo cual ayuda a pasar más de un registros a una base de datos de Access.
No sé qué metodo utilizas para llenar el ListBox, pero si los datos estuvieran en tabla de Excel, el ejemplo lo podrías adecuar.
El link es http://blogs.itpro.es/exceleinfo/2011/02/08/conectar-excel-a-access-mysql-y-sql/
Cualquier comentario con gusto lo vemos.
Mil gracias por respnder.
En si el proyecto es de un control de inventario con el cual hago los ingresos y egresos y devoluciones, todo por medio de formulario programados para tal fin. En los mismo se pueden sumar o descontar hasta 43 itemns en una sola operación,con la facilidad de usar el listbox en el que voy agregando los itemns desde un combobox(Que muestra los itemns de la base de datos) y los siguientes label y textbox en donde están la informacion restante de los códigos. Luego con un botón programado para agregar, inserto en el listbox. Como comprenderá el listbox se maneja por columnas y por tanto al querer sumar o restar de la base de datos los itemns que estén en el listbox, lo hago con un bucle que recorre el listbox y otro que recorre la base de datos y segun las coincidencias ejecuta la acción, luego de alli toda la operacion viaja a otra hoja la cual llamo Record para guardar dicho registro. Todo funciona a la perfección, sin embargo por la cantidad de informacion que pueda generarse, usar access para los registros seria la opción mas ideal. Es por ello que apelo a sus buena fe en querer orientarme con este tema. He usado su codigo que tiene del link proporcionado, pero lamentablemente no logré adaptarlo, por el tema del bucle que debo diseñar para que haga lo recorridos correspondiente y demas.
Espero pueda ayudarme si no es mucha molestia. Mi correo personal es dgarcia429@hotmail.com.
Mis respetos.
Señor Sergio
Olvidé mencionar el código que muestra los itemns de la base de datos en cada formulario, Todo a Ejemplo:
Codigo para cargar el combobox de la base de datos
Dim Cod as long
Cod=2
Do While Hoja1.Cells(Cod,1)””
Combobox1.Additem Hoja1.Cells(Cod,1)
Cod=Cod+1
Loop
El que muestra la informacion restante del codigo:
Dim ResCod As Long
ResCod=2
Do While Hoja1.Cells(ResCod,1)””
If Trim(Combobox1.Text)=Trim(Hoja1.Cells(ResCod,1) Then
Label1.Caption=Hoja1.Cells(ResCod,2)
Label2.Caption=Hoja1.Cells(ResCod,3)
Label3.Caption=Hoja1.Cells(ResCod,4)
ResCod=Rescod+1
Loop
Y asi sucesivamente y luego coloco las cantidades en un textbox y por ultimo lo inserto con un código que es el siguiente:
Dim A as Long
A=Listbox1.ListCount
Listbox1.AddItem Combobox1
ListBox1.List(A,1)=Label1.Caption
ListBox1.List(A,2)=Label2.Caption
ListBox1.List(A,3)=Label3.Caption
ListBox1.List(A,1)=Cdbl(textbox1.Value)
Como ultimo ejemplo, el codigo para descontar de la base de datos los codigos que coincidan del listbox con la base de datos:
Dim Lin as Long, Fila as Integer
Lin=2
Do While Hoja1.Cells(lin,1)””
For Fila =0 To Listbox1.Listcount-1
If Listbox1.Column(0,Fila)=Hoja1.Cells(lin,1) Then
Hoja1.Cells(Lin,6)=Cdbl(Hoja1.Cells(lin,6)-Listbox1.Column(5,Fila)
End If
Next
Lin=Lin+1
Loop
Espero Esto pueda ayudar a orientar aun mas mi consulta.
Mis respetos.
Señor Sergio
Olvidé mencionar el código que muestra los itemns de la base de datos en cada formulario, Todo a Ejemplo:
Codigo para cargar el combobox de la base de datos
Dim Cod as long
Cod=2
Do While Hoja1.Cells(Cod,1)””
Combobox1.Additem Hoja1.Cells(Cod,1)
Cod=Cod+1
Loop
El que muestra la informacion restante del codigo:
Dim ResCod As Long
ResCod=2
Do While Hoja1.Cells(ResCod,1)””
If Trim(Combobox1.Text)=Trim(Hoja1.Cells(ResCod,1) Then
Label1.Caption=Hoja1.Cells(ResCod,2)
Label2.Caption=Hoja1.Cells(ResCod,3)
Label3.Caption=Hoja1.Cells(ResCod,4)
ResCod=Rescod+1
Loop
Y asi sucesivamente y luego coloco las cantidades en un textbox y por ultimo lo inserto con un código que es el siguiente:
Dim A as Long
A=Listbox1.ListCount
Listbox1.AddItem Combobox1
ListBox1.List(A,1)=Label1.Caption
ListBox1.List(A,2)=Label2.Caption
ListBox1.List(A,3)=Label3.Caption
ListBox1.List(A,1)=Cdbl(textbox1.Value)
Como ultimo ejemplo, el codigo para descontar de la base de datos los codigos que coincidan del listbox con la base de datos:
Dim Lin as Long, Fila as Integer
Lin=2
Do While Hoja1.Cells(lin,1)””
For Fila =0 To Listbox1.Listcount-1
If Listbox1.Column(0,Fila)=Hoja1.Cells(lin,1) Then
Hoja1.Cells(Lin,6)=Cdbl(Hoja1.Cells(lin,6)-Listbox1.Column(5,Fila)
End If
Next
Lin=Lin+1
Loop
Espero Esto pueda ayudar a orientar aun mas mi consulta.
Mis respetos.
Buenas noches
Señor Sergio
Queria preguntarle; que le parece este código que modifiqué:
Sub ADOFromExcelToAccess()
‘Menu herramientas/ Referencias
‘Marca el Microsoft Activex Data Object 2.6 Library
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Integer
Set cn = New ADODB.Connection
cn.Open “Provider=Microsoft.ACE.OLEDB.12.0; ” & _
“Data Source= ” & ThisWorkbook.Path & “Access.accdb;” ‘ ruta del Archivo Acces en formato 2007
Set rs = New ADODB.Recordset
rs.Open “consulta”, cn, adOpenKeyset, adLockOptimistic, adCmdTable ‘ nombre de la tabla entre comillas
For r = 0 To UserForm1.ListBox1.ListCount – 1
With rs
.AddNew
.Fields(“Numero”) = UserForm1.ListBox1.List(0, r)
.Fields(“Nombre”) = UserForm1.ListBox1.List(1, r)
.Fields(“Apellido Paterno”) = UserForm1.ListBox1.List(2, r)
.Fields(“Apellido Materno”) = UserForm1.ListBox1.List(3, r)
.Update
End With
Next
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Espero poder contar con su evaluación.
Mis respetos.
Más que evaluación, agradezco que tomes los ejemplos del Blog para adecuarlos a tus necesidades, ya que es el propósito que sigo, dar una introducción a las cosas y los mismos visitantes tomen todo lo que puedan del Blog.
Si te funciona, perfecto, veo que hiciste un ciclo For para dar de alta desde un ListBox, lo cual es interesante.
Que bueno que le guste.
Ahora me encuentro con otra duda y perdon por las tantas interrogantes… Como podria mostrar el valor maximo en una columna de una tabla access desde el formulario excel?
Es decir; me gustaria que al abrirse el formulario, siguiendo la conexion ADO, me muestre el valor maximo de la columna en la tabla para usarlo como el correlativo o secuencia numerica para los resgistros. Una manera de enumerarlos cada vez que ingrese un nuevo registro, este se incremente con el nuevo registro.
Usted conoce el como hacerlo?
Te recomiendo que tu tabla de Access tenga un campo autonumérico para que cada vez que captures un registro éste sea autoincrementable.
Hola Sergio, buena tarde, intento bajar el archivo de ejemplo que tienes y me marca que no existe la pagina, publicaste otra que a dropbox e indica que no tiene el archivo, si no es molestia me lo puedes enviar a mi correo personal o puedes volver a subir el link por fa???
Gracias de antemano.
Te paso un nuevo Link de Dropbox.
https://www.dropbox.com/s/i5o5s3795z8w24n/EXCELeINFO%20-%20Excel%20a%20Access%20mediante%20form%20de%20vba.zip
Saludos !!
Buenas noches
Mil gracias por responder.
Es muy cierto lo del incremento sin embargo, considerando la cantidad de itemns de una misma operación, por medio del bucle, seria la cantidad de numeros que se registrarian.
Ejemplo: Si en el formulario vba excel con el numero correlativo 000001 tengo cinco itemns en el listbox, serian cinco veces el numero 000001 que se registraria en la tabla access en la primera columna. Por tanto ese seria el orden a registrar y asi sucesivamente. Es por ello que esperaba obtener un codigo con el cual, mostraria el valor maximo de la columna de la tabla access para que asi cada vez que haga una operacion, el numero correlativo vaya incrementandose.
En verdad seria una gran solucion, no obstante, estoy muy complacido en la ayuda que usted gentilmente ha proporcionado.
Mis respetos.
No tengo un ejemplo para lo que dices, pero te recomiendo las página de Abraham Valencia para temas de Excel – Access. http://abrahamexcel.webcindario.com/Ejemplos.html
Sergio Alejandro Campos
Hola, He leído todo el blog y realizado las adaptaciones para utilizarlo en mi proyecto, me ha servido mucho, sin embargo no soy un experto y estoy batallando para actualizar los registros.
Para ser practico en explicarte mi problema tomare el ejemplo de las citas:
Supongamos que desde excel queremos actualizar una cita que fue capturada anteriormente y necesitamos modificara en un campo especifico por cualquier motivo.
Actualmente he logrado acceder a las server…BDMiBase.accdb alojado en una unidad de red y agregar registros, ahora necesito actualizar el estatus de cada registro, hasta que cada uno de estos sean cerrados o cancelados, dicha actualización se debe realizar medio de diferentes programas VBA@Excel dependiendo de tipo de usuario y el avance del proceso.
Espero me puedan ayudar para saber como resolverlo en cada archivo que debe actualizar la bd.accdb
Sergio: consulta en el formulario tengo que ingresar la hora tal como indicas el ejemplo, ahora los campos que son números no lo valida el formulario sin embargo te puede salir mensaje de error x que en Access esta definido como numérico? para access
Es muy recomendable que los datos que ingresas tengan el mismo tipo de datos en tus campos de Access.