Gracias por el aporte, algo así andaba buscando; pasar un padron de inventarios pasarlos a una base datos de manera masiva; anteriormente lo iba capturando registro por registro.
¡Hola Walter! Sí, estoy usando workbench aunque también puede ser cualquier otro gestor SQL, como phpmyadmin o incluso VSCode tiene una extensión. En el caso que necesites escalar esta macro a varias hojas lo mejor es parametrizarla de manera que reciba el nombre de la hoja y el nombre de la tabla destino en SQL para que la macro sepa dónde hacer la inserción. Si gustas una asesoría personalizada puedes escribirme al correo que dejo en la descripción del video. ¡Saludos y mucho éxito!
Hola Francisco! Sí es posible solo necesitas escribir en comando en una variable de tipo STRING y llamar a su ejecución como los comandos INSERT que vemos en el video, saludos!
Hola felicitaciones, muy didactico el procedimiento. Consulta que referencia debo utilizar para insertar registros desde Excel en una base de Datos en la nube Amazon AWS DynamoDB?
¡Hola Marco! Tendrías que adquirir el controlador ODBC para poder conectarte a la base de datos. Me aparece que el controlador tiene un costo, te comparto el link: www.cdata.com/drivers/dynamodb/odbc/?kw=dynamodb%20odbc%20driver&cpn=16681169259&Search__-Connector-__Amazon_DynamoDB&ODBC_Driver_-_Amazon_DynamoDB&|dynamodb%20odbc%20driver&kw=dynamodb%20odbc%20driver&cpn=16681169259&gclid=CjwKCAjwkaSaBhA4EiwALBgQaKVjf08czakYrHesFoxXFzO_00mmhk2kaa4CacFtPS2t-oqeTyXu7BoCRX0QAvD_BwE
MUY BUEN VIDEO Y TE FELICITO POR SU BUENA EXPLICASION; YO SOLO TENGO UNA DUDA SI SE TRABAJA COMO TABLA EL ARCHIVO EXEL AFECTA EN EL CODIGO DE LA MACRO? :)
Amigo buen dia, muchas gracias por el video. Pude hacer el código en vb y al parecer corre perfectamente. Pero los datos no se ven reflejados en mi base de datos en Mysql. Presiento que hay alagun problema con la conexion ODBC, sin embargo, no tengo idea cual puede ser el problema porque antes he hecho conexiones a ODBC con otras herramientas y ha funcionado perfectamente. Agradecería cualquier recomendación
Hola Sergio, solo para que puedas comprobar que la conexión ODBC ha sido exitosa te recomiendo descargar la plantilla gratuita que coloqué en la descripción de este video: th-cam.com/video/Hx-jgepmheY/w-d-xo.htmlsi=0wrqDUryarvq_f6N Si no hay error de conexión, lo que seguiría es revisar la sintaxis del comando INSERT INTO, puede ser que haya algún problema con la sintaxis, quedo pendiente. ¡Saludos!
Buenos días, excelente video, pero una consulta si tienes un encabezado de 60 columnas,como seria, tendría que nombrar las 60, y darle su valor a cada uno, como INT,VARCHAR,ETC, como veo en tu video que tu nombras a tus 4 columnas. por favor espero que puedas despejar mi consulta
pregunta, si la tabla en excel sigue extendiéndose en datos los copia todos junto con los registros nuevos o solo copia los registros nuevos? gracias e tu canal me esta enseñando mucho
¡Hola! El método que usamos no discrimina a los registros existentes, sin embargo, puedes configurar tu base de datos con un campo UNIQUE, por ejemplo el id para que si ese id ya existe, la base de datos responda con un error, y la macro puede configurarse para manjear ese error ignorando la inserción y continuando con otros registros, de esta manera el proceso solo insertará registros nuevos con base en el id. Espero que esta información te ayude a cumplir tu objetivo y si deseas puedo apoyarte con un desarrollo personalizado, puedes contactarme al correo que dejo en la descripción del video. ¡Saludos! :D
Excelente contenido . Una pregunta quiero modificar la macro para SQL Server . Una pregunta , tengo instalado el Developer 64 bits en W11 - V15.0.2095.3 y el SSMS es la version 18.1 . Como se cual es el controlador ODBC que me aplica , porque en mi equipo tengo instalados 4 ? Creo es el ODBC driver 18 for sql server (v 2018.181.01.01) pero no estoy seguro. Saludos
¡Hola! Su cadena de conexión se vería de la siguiente manera: Driver={SQL Server};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; No es neceario especificar la versión para SQL server, mas info: www.connectionstrings.com/microsoft-sql-server-odbc-driver/
Gracias , por el apoyo . la corrí con los cambios sugeridos y me lanzo error en tiempo de ejecución '-2147217887 (80040e21)' ODBC SQL server driver por característica opcional no habilitada . consulte en internet y parece un error relacionado con la fecha. Probe de AdDate a adDBDate como recomiendas pero nada. Que podra ser en tu experiencia ?
Excelente video. Tienes alguna idea de porque cuando ejecutó la macro con la configuración de mis campos lanza el error de "El objeto no admite argumentos con nombre" si me puedes ayudar.
Hola Mario, muchas gracias por comentar, desgraciadamamente los mensajes de error de VBA no son muy claros, te agradecería si pudiéras cmpartirme al correo que dejo en la descripción del video las capturas de pantalla del mensaje de error así como de la línea de código que está entrando en error. Muchas gracias y saludos.
Saludos amigo, en el caso de la definición de los parámetros, para agregar los caracteres especiales cual sería el adxxxxxx, Por ejemplo, deseo agregar el símbolo de grados (°) y me salta el error.
Buen día!, Muy bueno el ejemplo, pero en el caso de que en la hoja Excel se vayan incrementando los registros y se tenga que estar actualizando toda la tabla cada mes por ejemplo; ¿Cómo le hago para evitar insertar registros duplicados y cómo guardar los valores de tipo moneda en la base de datos tal y como se muestran en la hoja de Excel?. Te envío un correo para explicarte ampliamente el tema de mi duda, saludos. ¡gran trabajo!
Hola Jonathan! una manera de evitar los registros duplicados es el uso de Identificadores (IDs) y el marcar este campo como UNIQUE en tu base de datos de manera que si ya existe, la propia base de datos mande un error indicando que no se puede insertar ese dato ya existente.
una forma simple seria que si la actualización, tiene todos los registros en la hoja actual, bastaría con borrar la tabla y crearla igual con código sql, ahora si ejecutar la carga total de datos. Por otro lado en Excel , el tipo de dato numérico lo visualizas con un formato de "moneda". el contenido numérico se almacena sin ningún problema en tu base de datos
Hola Alan, si te refieres a que necesitas tener abierto un gestor como MySQL o SQL Server, esto no es necesario, la que tiene que estar abierta es la conexión a SQL pero esa la creamos y abrimos desde la macro VBA.
Hola gracias por compartir sus conocimientos, tengo la siguiente duda mi ODBC es 9.0 creo la base y la table al momento de ejecutar la macro me aparece un mensaje de DEPURACIÓN y se detiene la macro en el paso EXCECUTE no se si es la versión que usa la 8.0
Hola buen dia buenisimo los videos al escribir .Parameters.Append no puedo continuar con la sintaxis opcionalmente estoy usando .CreateParameter("int", adLongVarChar, adParamInput, 255, int) = Parameter pero me da errores al ejecutar las macros y no guarda nada en MySql "the number of parameters makers is not equal to the number parameter provided" que prodra ser ?
¡Hola! El error menciona que el número de parámetros y el número de marcadores no es igual, los parámetros son las líneas que inician con .Parameters.Append y los marcadores son los ? que se escriben entre paréntesis después de VALUES.
Hola muchas gracias por la aportacion, solo una duda en el caso que en lugar de insertar solo actualice algunos campos en diferentes tablas, se tienen que poner que tipo de valor es el dato?
hola de repente ya no me quiso abrir el archivo me marca un error y me lo abre pero me quita todo el codigo de visual tienes una idea del por que y un favor podrias proporcionarme el codigo en una hoja de texto quiero agregarlo a otro documento a ver como se comporta gracias de antemano
Hola profe! Tengo un inconveniente al realizar la ejecucion...Me sale el siguiente mensaje de error: [Microsoft][Administrador de controladores ODBC] No se encuentra el nombre del origen de datos y no se especificó ningun controlador predeterminado. Como driver utilizo el MySQL ODBC 8.0. Gracias!!
No sé nada de SQL, alguien me puede confirmar si al importar datos en SQL desde excel, al hacerlo en repetidas veces, los datos se duplican? O SQL reconoce y solo importa los nuevos?
Hola Eduardo, al crear una tabla en una base de datos SQL puedes establecer una característica en cada columna para que solo tenga valores únicos, sin embargo, haciendo esto, si el registro ya se encuentra en la base de datos el método de inserción mandará un error, se puede hacer una adaptación a la macro para que si se detecta ese error debido a un registro duplicado simplemente continúe con el siguiente registro. ¡Saludos!
Hola buen día, tengo un problema, si en mis celdas tengo palabras con acentos y al enviar los datos a mysql me deja cortadas las plabras que las contienen, ejemplo en excel tengo en una celda el registro "01 Preparación" y al enviar los datos a mysql solo se registra "01 Preparaci" es algun problema con mi bd o con excel?
¡Hola! Puede deberse a configurar el charset en nuestra base de datos y en nuestra cadena de conexión, después de PASSWORD = ""; podríamos poner charset=UTF8;
Hola buen dia alguien que me pueda ayudar: al ejecutar la macro me arroja el siguiente error Error de compilación: No se admite el tipo de Automatización en Visual Basic
Gracias por el aporte, algo así andaba buscando; pasar un padron de inventarios pasarlos a una base datos de manera masiva; anteriormente lo iba capturando registro por registro.
¡Un gusto leer tu comentario Erik!
BASE DE DATOS SQL INSERTAR DATOS. EXCELENTE.
Muy bueno. Gracias por compartirlo.
Excelente explicación ya lo voy a adaptar para un lisbox gracias por eso saludos
A la orden Jean Carlos!!
excelente video muchas gracias.
Utilizas sql workbench ? y para cuando utilizamos varias hojas de excel que son tablas en SQL ?
¡Hola Walter! Sí, estoy usando workbench aunque también puede ser cualquier otro gestor SQL, como phpmyadmin o incluso VSCode tiene una extensión. En el caso que necesites escalar esta macro a varias hojas lo mejor es parametrizarla de manera que reciba el nombre de la hoja y el nombre de la tabla destino en SQL para que la macro sepa dónde hacer la inserción. Si gustas una asesoría personalizada puedes escribirme al correo que dejo en la descripción del video. ¡Saludos y mucho éxito!
Buenísimo!!!!!!!!
Muy bien explicado , ¿se puede hacer un "truncate table" a la tabla a la cual quieres insertar datos antes de hacer el insert?
Hola Francisco! Sí es posible solo necesitas escribir en comando en una variable de tipo STRING y llamar a su ejecución como los comandos INSERT que vemos en el video, saludos!
Hola felicitaciones, muy didactico el procedimiento. Consulta que referencia debo utilizar para insertar registros desde Excel en una base de Datos en la nube Amazon AWS DynamoDB?
¡Hola Marco! Tendrías que adquirir el controlador ODBC para poder conectarte a la base de datos. Me aparece que el controlador tiene un costo, te comparto el link: www.cdata.com/drivers/dynamodb/odbc/?kw=dynamodb%20odbc%20driver&cpn=16681169259&Search__-Connector-__Amazon_DynamoDB&ODBC_Driver_-_Amazon_DynamoDB&|dynamodb%20odbc%20driver&kw=dynamodb%20odbc%20driver&cpn=16681169259&gclid=CjwKCAjwkaSaBhA4EiwALBgQaKVjf08czakYrHesFoxXFzO_00mmhk2kaa4CacFtPS2t-oqeTyXu7BoCRX0QAvD_BwE
Hola profesor. Se puede hacer un sistema de inventario. Que desde excel hagas los movimientos y en sql se descuente el inventario
excelente
¡Muchas gracias por tu valioso comentario!
MUY BUEN VIDEO Y TE FELICITO POR SU BUENA EXPLICASION; YO SOLO TENGO UNA DUDA SI SE TRABAJA COMO TABLA EL ARCHIVO EXEL AFECTA EN EL CODIGO DE LA MACRO? :)
¡Hola! Gracias por comentar, no debería de afectar el funcionamiento de la macro. ¡Saludos!
Amigo buen dia, muchas gracias por el video. Pude hacer el código en vb y al parecer corre perfectamente. Pero los datos no se ven reflejados en mi base de datos en Mysql. Presiento que hay alagun problema con la conexion ODBC, sin embargo, no tengo idea cual puede ser el problema porque antes he hecho conexiones a ODBC con otras herramientas y ha funcionado perfectamente. Agradecería cualquier recomendación
Hola Sergio, solo para que puedas comprobar que la conexión ODBC ha sido exitosa te recomiendo descargar la plantilla gratuita que coloqué en la descripción de este video: th-cam.com/video/Hx-jgepmheY/w-d-xo.htmlsi=0wrqDUryarvq_f6N Si no hay error de conexión, lo que seguiría es revisar la sintaxis del comando INSERT INTO, puede ser que haya algún problema con la sintaxis, quedo pendiente. ¡Saludos!
@@InteligenciaEficiente gracias amigo. Lo leeré
Buenos días, excelente video, pero una consulta si tienes un encabezado de 60 columnas,como seria, tendría que nombrar las 60, y darle su valor a cada uno, como INT,VARCHAR,ETC, como veo en tu video que tu nombras a tus 4 columnas. por favor espero que puedas despejar mi consulta
pregunta, si la tabla en excel sigue extendiéndose en datos los copia todos junto con los registros nuevos o solo copia los registros nuevos? gracias e tu canal me esta enseñando mucho
¡Hola! El método que usamos no discrimina a los registros existentes, sin embargo, puedes configurar tu base de datos con un campo UNIQUE, por ejemplo el id para que si ese id ya existe, la base de datos responda con un error, y la macro puede configurarse para manjear ese error ignorando la inserción y continuando con otros registros, de esta manera el proceso solo insertará registros nuevos con base en el id. Espero que esta información te ayude a cumplir tu objetivo y si deseas puedo apoyarte con un desarrollo personalizado, puedes contactarme al correo que dejo en la descripción del video. ¡Saludos! :D
Gracias lo empezaré a probar @@InteligenciaEficiente
Excelente contenido . Una pregunta quiero modificar la macro para SQL Server . Una pregunta , tengo instalado el Developer 64 bits en W11 - V15.0.2095.3 y el SSMS es la version 18.1 . Como se cual es el controlador ODBC que me aplica , porque en mi equipo tengo instalados 4 ? Creo es el ODBC driver 18 for sql server (v 2018.181.01.01) pero no estoy seguro. Saludos
¡Hola! Su cadena de conexión se vería de la siguiente manera: Driver={SQL Server};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
No es neceario especificar la versión para SQL server, mas info: www.connectionstrings.com/microsoft-sql-server-odbc-driver/
Gracias , por el apoyo . la corrí con los cambios sugeridos y me lanzo error en tiempo de ejecución '-2147217887 (80040e21)' ODBC SQL server driver por característica opcional no habilitada . consulte en internet y parece un error relacionado con la fecha. Probe de AdDate a adDBDate como recomiendas pero nada. Que podra ser en tu experiencia ?
Excelentesheinnnn..!!!!
Excelente video.
Tienes alguna idea de porque cuando ejecutó la macro con la configuración de mis campos lanza el error de "El objeto no admite argumentos con nombre" si me puedes ayudar.
Hola Mario, muchas gracias por comentar, desgraciadamamente los mensajes de error de VBA no son muy claros, te agradecería si pudiéras cmpartirme al correo que dejo en la descripción del video las capturas de pantalla del mensaje de error así como de la línea de código que está entrando en error. Muchas gracias y saludos.
Saludos amigo, en el caso de la definición de los parámetros, para agregar los caracteres especiales cual sería el adxxxxxx, Por ejemplo, deseo agregar el símbolo de grados (°) y me salta el error.
Buen día!, Muy bueno el ejemplo, pero en el caso de que en la hoja Excel se vayan incrementando los registros y se tenga que estar actualizando toda la tabla cada mes por ejemplo; ¿Cómo le hago para evitar insertar registros duplicados y cómo guardar los valores de tipo moneda en la base de datos tal y como se muestran en la hoja de Excel?.
Te envío un correo para explicarte ampliamente el tema de mi duda, saludos. ¡gran trabajo!
Hola Jonathan! una manera de evitar los registros duplicados es el uso de Identificadores (IDs) y el marcar este campo como UNIQUE en tu base de datos de manera que si ya existe, la propia base de datos mande un error indicando que no se puede insertar ese dato ya existente.
una forma simple seria que si la actualización, tiene todos los registros en la hoja actual, bastaría con borrar la tabla y crearla igual con código sql, ahora si ejecutar la carga total de datos. Por otro lado en Excel , el tipo de dato numérico lo visualizas con un formato de "moneda". el contenido numérico se almacena sin ningún problema en tu base de datos
Consulta para que funcione el INSERTAR DATOS, el SQL debe estar abierto siempre?
Hola Alan, si te refieres a que necesitas tener abierto un gestor como MySQL o SQL Server, esto no es necesario, la que tiene que estar abierta es la conexión a SQL pero esa la creamos y abrimos desde la macro VBA.
@@InteligenciaEficiente Perfecto voy a probarlo
Hola gracias por compartir sus conocimientos, tengo la siguiente duda mi ODBC es 9.0 creo la base y la table al momento de ejecutar la macro me aparece un mensaje de DEPURACIÓN y se detiene la macro en el paso EXCECUTE no se si es la versión que usa la 8.0
¡Hola! Sí, puede ser por la versión del controlador, desde este link puede descargar la versión 8.0 downloads.mysql.com/archives/c-odbc/
Hola buen dia
buenisimo los videos
al escribir .Parameters.Append no puedo continuar con la sintaxis
opcionalmente estoy usando .CreateParameter("int", adLongVarChar, adParamInput, 255, int) = Parameter
pero me da errores al ejecutar las macros y no guarda nada en MySql
"the number of parameters makers is not equal to the number parameter provided"
que prodra ser ?
¡Hola! El error menciona que el número de parámetros y el número de marcadores no es igual, los parámetros son las líneas que inician con .Parameters.Append y los marcadores son los ? que se escriben entre paréntesis después de VALUES.
Hola muchas gracias por la aportacion, solo una duda en el caso que en lugar de insertar solo actualice algunos campos en diferentes tablas, se tienen que poner que tipo de valor es el dato?
hola de repente ya no me quiso abrir el archivo me marca un error y me lo abre pero me quita todo el codigo de visual tienes una idea del por que y un favor podrias proporcionarme el codigo en una hoja de texto quiero agregarlo a otro documento a ver como se comporta gracias de antemano
Hola profe! Tengo un inconveniente al realizar la ejecucion...Me sale el siguiente mensaje de error: [Microsoft][Administrador de controladores ODBC] No se encuentra el nombre del origen de datos y no se especificó ningun controlador predeterminado. Como driver utilizo el MySQL ODBC 8.0. Gracias!!
¡Hola! Si aún continúas con problemas puedes enviarme tu macro por correo: inteligenciaeficienteYT@gmail.com ¡Saludos!
No sé nada de SQL, alguien me puede confirmar si al importar datos en SQL desde excel, al hacerlo en repetidas veces, los datos se duplican? O SQL reconoce y solo importa los nuevos?
Hola Eduardo, al crear una tabla en una base de datos SQL puedes establecer una característica en cada columna para que solo tenga valores únicos, sin embargo, haciendo esto, si el registro ya se encuentra en la base de datos el método de inserción mandará un error, se puede hacer una adaptación a la macro para que si se detecta ese error debido a un registro duplicado simplemente continúe con el siguiente registro. ¡Saludos!
Y si deseo agregar información con saltos de línea?
La bases de datos almacenan por cada registro, los saltos de línea serán almacenados como un caracter especial, SALUDOS!!
Hola buen día, tengo un problema, si en mis celdas tengo palabras con acentos y al enviar los datos a mysql me deja cortadas las plabras que las contienen, ejemplo en excel tengo en una celda el registro "01 Preparación" y al enviar los datos a mysql solo se registra "01 Preparaci" es algun problema con mi bd o con excel?
¡Hola! Puede deberse a configurar el charset en nuestra base de datos y en nuestra cadena de conexión, después de PASSWORD = ""; podríamos poner charset=UTF8;
y en sql POSTGRESS ????
Hola buen dia alguien que me pueda ayudar: al ejecutar la macro me arroja el siguiente error
Error de compilación:
No se admite el tipo de Automatización en Visual Basic
Hola Juan, puedes enviarme tu macro a inteligenciaeficienteYT@gmail.com para poder ayudarte con ese problema. ¡Saludos!