{"id":9492,"date":"2017-03-21T11:25:17","date_gmt":"2017-03-21T10:25:17","guid":{"rendered":"http:\/\/www.palentino.es\/blog\/?p=9492"},"modified":"2017-03-21T11:28:45","modified_gmt":"2017-03-21T10:28:45","slug":"conexion-desde-excel-con-una-base-de-datos","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/conexion-desde-excel-con-una-base-de-datos\/","title":{"rendered":"Conexi\u00f3n desde Excel con una Base de datos."},"content":{"rendered":"<p>Es esta entrada os mostrar\u00e9 c\u00f3mo conectar a una base de datos desde Microsoft Excel nada mas abrir el documento o libro. Os dejo el c\u00f3digo fuente necesario para funcionar y una base de datos de ejemplo.<\/p>\n<p>Es necesario disponer como m\u00ednimo de <strong>Excel 2007 <\/strong>en adelante.<\/p>\n<p>La base de datos es en formato<strong> Access 2007<\/strong>\u00a0y\/o superiores. Posee una password de entrada (demo). Cuando se abre la hoja de c\u00e1lculo Excel, tiene asociado un evento <strong>Workopen<\/strong> con las <strong>rutinas<\/strong> necesarias para<strong> conectar con la base sin necesidad de realizar un DSN<\/strong>. Podr\u00eda aplicarse cambiando la cadena de conexi\u00f3n a <strong>otras bases<\/strong>. Gracias a ello, tenemos la posibilidad de realizar<strong> procesamiento de datos en la base sobre la hoja de c\u00e1lculo<\/strong>. Posibles tareas como c<strong>alcular datos con formulaci\u00f3n en funci\u00f3n de los datos de la base<\/strong>.<\/p>\n<p>Para ver el c\u00f3digo fuente tendremos que usar la contrase\u00f1a <span style=\"color: #800000;\"><strong>demo<\/strong><\/span>.<\/p>\n<p><!--more--><\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9496\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access1.jpg\" alt=\"\" width=\"686\" height=\"620\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access1.jpg 686w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access1-300x271.jpg 300w\" sizes=\"auto, (max-width: 686px) 100vw, 686px\" \/><\/a><\/p>\n<p>En funci\u00f3n del <strong>nivel asignado en Access<\/strong>, colocado en la variable <strong>Global_Nivel<\/strong>, podremos hacer ciertas cosas como mostrar controles, f\u00f3rmulas, etc&#8230;<\/p>\n<p>Cuando activemos las macros al iniciar, se nos solicitar\u00e1 introducir un usuario y una password.<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9497\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access2.jpg\" alt=\"\" width=\"477\" height=\"432\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access2.jpg 477w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access2-300x272.jpg 300w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9498\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access3.jpg\" alt=\"\" width=\"359\" height=\"147\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access3.jpg 359w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access3-300x123.jpg 300w\" sizes=\"auto, (max-width: 359px) 100vw, 359px\" \/><\/a><\/p>\n<p>Una vez validados, nos mostrar\u00e1 los datos y cambiar\u00e1 de color la celda.<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access-programador.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9500\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access-programador.jpg\" alt=\"\" width=\"686\" height=\"457\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access-programador.jpg 686w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access-programador-300x200.jpg 300w\" sizes=\"auto, (max-width: 686px) 100vw, 686px\" \/><\/a><\/p>\n<p>Para activar la pesta\u00f1a del ribbon &#8220;Programador&#8221;, es necesario cambiar las opciones de Excel.<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access-programador-2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9501\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access-programador-2.jpg\" alt=\"\" width=\"826\" height=\"678\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access-programador-2.jpg 826w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access-programador-2-300x246.jpg 300w\" sizes=\"auto, (max-width: 826px) 100vw, 826px\" \/><\/a><\/p>\n<p>El fichero Excel es una libro con macros, dentro, en sus opciones, se han activado las siguientes referencias. Es interesante conocerlas y ver sus posibilidades en caso de conectar con otro tipo de gestores o sistemas.<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Referencias.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9503\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Referencias.jpg\" alt=\"\" width=\"445\" height=\"359\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Referencias.jpg 445w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Referencias-300x242.jpg 300w\" sizes=\"auto, (max-width: 445px) 100vw, 445px\" \/><\/a><\/p>\n<p>Para ver el c\u00f3digo generado en el IDE, es preciso usar la password, demo. Mediante esta t\u00e9cnica <strong>protegemos todo el c\u00f3digo del libro<\/strong>, ya que a diferencia de Access, en Excel no se puede compilar las hojas para compilar el c\u00f3digo.<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access-programador-3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9502\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access-programador-3.jpg\" alt=\"\" width=\"654\" height=\"315\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access-programador-3.jpg 654w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2017\/03\/Excel-acceso-access-programador-3-300x144.jpg 300w\" sizes=\"auto, (max-width: 654px) 100vw, 654px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.palentino.es\/software\/excel-access.rar\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2874\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/12\/Descarga.png\" alt=\"\" width=\"300\" height=\"100\" \/><\/a><\/p>\n<p>Muestro u<strong>n fragmento del c\u00f3digo que valida usuarios<\/strong> (ejemplo).<\/p>\n<pre class=\"lang:vbnet decode:true \">Private Sub Workbook_Open()\r\n'Procedimiento creado por Oscar de la Cuesta Campillo\r\n' www.palentino.es\r\n\r\nOn Error Resume Next\r\n mbMacrosEnabled = True\r\n'Pedir el usuario y password\r\nlogin = InputBox(\"Introduzca el usuario (demo):\", \"Aviso Seguridad de Excel\")\r\nPass = InputBox(\"Introduzca la password (demo):\", \"Aviso Seguridad de Excel\")\r\n\r\nSet cnn = New ADODB.Connection\r\nruta_base = Application.ActiveWorkbook.Path &amp; \"\\usuarios.accdb\"\r\ncnn.Open \"Provider=Microsoft.ACE.OLEDB.12.0; \" &amp; _\r\n     \"Data Source=\" &amp; ruta_base &amp; \";\" &amp; _\r\n     \"Jet OLEDB:Database Password=demo\"\r\n\r\nSet registro = New ADODB.Recordset\r\nSet registro_log = New ADODB.Recordset\r\n\r\ncSQL = \"select count(*) as cuenta from usuarios where login ='\" &amp; LCase(login) &amp; \"' and password = '\" &amp; LCase(Pass) &amp; \"';\"\r\nregistro.Open cSQL, cnn, adOpenDynamic, adLockOptimistic\r\nregistro_log.CursorType = adOpenOptimistic\r\nregistro_log.LockType = adLockOptimistic\r\nregistro_log.Open \"log\", cnn\r\n\r\n'Nos preparamos para la gesti\u00f3n del log\r\nregistro_log.AddNew\r\nregistro_log!Fecha = Date\r\nregistro_log!hora = Time\r\nusuario = login\r\nregistro_log!login = login\r\n\r\nregistro_log!Password = Pass\r\nIf registro!cuenta = 0 Then\r\n    MsgBox \"Acceso no v\u00e1lido, compruebe sus credenciales. \", vbCritical, \"Aviso Seguridad\"\r\n    registro_log!fallido = \"SI\"\r\n    registro_log.Update\r\n    registro_log.Close\r\n    registro.Close\r\n    cnn.Close\r\n    Application.Quit\r\n    \r\nElse\r\n'Mostramos la barra de menus si se poseen los permisos adecuados\r\n    registro_log!fallido = \"NO\"\r\n    registro_log.Update\r\n    registro_log.Close\r\n    registro.Close\r\n\r\n'Establecemos las variables globales\r\nGlobal_usuario = LCase(usuario)\r\nGlobal_Password = LCase(Pass)\r\n\r\nSet registro = New ADODB.Recordset\r\ncSQL = \"select nivel from usuarios where login ='\" &amp; LCase(login) &amp; \"' and password = '\" &amp; LCase(Pass) &amp; \"';\"\r\nregistro.Open cSQL, cnn, adOpenDynamic, adLockOptimistic\r\n\r\n'Se establece el nivel de acceso a la entrada\r\nglobal_nivel = registro!Nivel\r\nregistro.Close\r\ncnn.Close\r\nDoCmd.Close\r\nMsgBox \"Entrada v\u00e1lida a Excel.\"\r\n\r\n  Range(\"B10\").Select\r\n    ActiveCell.FormulaR1C1 = \"El usuario \" &amp; login &amp; \", posee un nivel \" &amp; global_nivel\r\n    Range(\"B11\").Select\r\n    Selection.Interior.Color = 5287936\r\n    \r\n  Range(\"B11\").Select\r\n  ActiveCell.FormulaR1C1 = global_nivel\r\n\r\n\r\nEnd If\r\nEnd Sub<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es esta entrada os mostrar\u00e9 c\u00f3mo conectar a una base de datos desde Microsoft Excel nada mas abrir el documento o libro. Os dejo el c\u00f3digo fuente necesario para funcionar y una base de datos de ejemplo. Es necesario disponer como m\u00ednimo de Excel 2007 en adelante. La base de datos es en formato Access 2007\u00a0y\/o superiores. Posee una password de entrada (demo). Cuando se abre la hoja de c\u00e1lculo Excel, tiene asociado un evento Workopen con las rutinas necesarias para conectar con la base sin necesidad de realizar un DSN. Podr\u00eda aplicarse cambiando la cadena de conexi\u00f3n a otras bases. Gracias a ello, tenemos la posibilidad de realizar procesamiento de datos en la base sobre la hoja de c\u00e1lculo. Posibles tareas como calcular datos con formulaci\u00f3n en funci\u00f3n de los datos de la base. Para ver el c\u00f3digo fuente tendremos que usar la contrase\u00f1a demo.<\/p>\n","protected":false},"author":1,"featured_media":9147,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[624],"tags":[101,429,626,671],"class_list":["post-9492","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-excel","tag-access","tag-base-de-datos","tag-excel","tag-microsoft"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/9492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=9492"}],"version-history":[{"count":8,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/9492\/revisions"}],"predecessor-version":[{"id":9509,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/9492\/revisions\/9509"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/9147"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=9492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=9492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=9492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}