Guardar/Respaldar base de datos excel en Google (Synchronizing data between Google Docs and Excel)

En este artículo vamos a empezar a ver cómo podemos interactuar con Google Docs. Más precisamente cómo podemos aprovechar las características de las hojas de cálculo y formularios de Google Drive o Google Docs.

En el artículo anterior vimos como rellenar formularios web desde Excel. Esto nos ayudará para poder entender los procedimientos que utilizamos.

También utilizaremos los conceptos que vimos en el artículo de “Entrada-Salida de Stock en Excel”. En este caso en vez de guardar los datos localmente en una hoja de Excel, lo guardamos en una hoja de cálculo en la web.



Click en la imagen para ver el video relacionado sino a través de este Link..

Como siempre vamos a ver un ejemplo práctico, una idea, para mostrar el funcionamiento pero no es limitante ya que una vez entendido podemos adaptarlo a nuestras propias mini aplicaciones.
Básicamente tenemos un formulario de entrada-salda de stock con las mismas características que vimos en un artículo anterior.


Recordamos rápidamente cómo funciona. Elegimos un ítem o identificación de un producto y luego introducimos la cantidad a entrar o dar salida en el stock. Luego con el botón ingresar archivamos el dato en la hoja stock. Eso es todo.
Por otro lado creamos un formulario en google docs para poder guardar nuestros datos en la web. Este formulario tiene que tener la misma cantidad de datos o ítems que nuestro formulario. En este caso son 5 elementos.


Crear un formulario de google es muy fácil, en internet pueden encontrar varios ejemplos y tutoriales.
Este formulario lo podemos asociar a una hoja de cálculo de google en donde se almacenan las respuestas al formulario.


Como se puede observar la hoja web tiene el mismo aspecto que la hoja en Excel. Aquí es donde guardaremos nuestra base de datos o nuestros datos.
En conclusión cuando hacemos la entrada o salida de nuestros productos de stock. Estos elementos se anotan o se guardan en la hoja de google docs. Esto es muy bueno porque de esta manera segurizamos la información que en nuestra computadora se puede ver expuesta de alguna manera. Por ejemplo se puede dañar el disco, pueden robarnos la información, etc. Lo unico que hay que ntener en cuenta es que necesitamos una conexión a internet confiable.


Procedimiento
Datos de partida:
Como utilizamos la misma plantilla de “enstrada-salida de stock” en teoría deberiamos partir del mismo codigo.
El problema es que los formularios en internet como y habiamos dicho estan en su mayoria protegidos para que no se puedan utilizar robots o software malisioso que no sea una persona. Es por eso que se protegen con CAPTCHA por ejemplo. En el caso de los formularios de googl ees similar. Han cambiado la forma de definirlos, etc.
Tuvimos que poner nuestro mayor esfuerzo para encontrar una solución y lo conseguimos. Así que mostraremos pequeñas variaciones con el código original.

Código
En el código debemos tener en cuenta que los datos son 5 en este caso: Ítem, nombre, descripción, cantidad y tipo de dato.
Se utiliza una comprobación para saber si el dato se cargo correctamente.
Pude ser un tanto tedioso entenderlo, lo importante es ver los conceptos generales mas allá del código.

INICIO CODIGOS----------------------------------------
Sub Ingresar()
' Ingresar Macro
Application.ScreenUpdating = False
'Copio los datos
    Range("D14:H14").Select
    Selection.Copy
     'pego los datos
    Sheets("Stock").Select
    Range("B" & Range("E2").Value).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    'Seleccionamos la celda de ID
    Sheets("Ent-Sal").Select
    Range("D14").Select
   
  'Rutina para guardar en google docs
 Dim IE As Object
'creamos el objeto para el navegador Internet Explorer
Set IE = CreateObject("InternetExplorer.application")
'dentro del navegador de internet explorer, accedemos a la página donde esta el formulario HTML
IE.Navigate Sheets("Stock").Range("H1").Value
Do
    DoEvents
 Loop Until IE.readystate = 4 'verifico si cargo correctamente la página
  'Completo los elementos del formulario por ID
IE.Document.all.Item("entry.73292380").Value = Sheets("Ent-Sal").Range("D14").Value
IE.Document.all.Item("entry.491606368").Value = Sheets("Ent-Sal").Range("E14").Value
IE.Document.all.Item("entry.36767969").Value = Sheets("Ent-Sal").Range("F14").Value
IE.Document.all.Item("entry.1533843748").Value = Sheets("Ent-Sal").Range("G14").Value
IE.Document.all.Item("entry.57838728").Value = Sheets("Ent-Sal").Range("H14").Value
'no hacemos visible la ventana de Internet Explorer
IE.Visible = False
'enviar formulario
IE.Document.Forms(0).submit
'guardo estado pagina
pag = Sheets("Stock").Range("H2").Value
'mensaje para avisarnos si se cargo correctamente
        If IE.LocationURL = pag Then
       MsgBox "Datos Cargados Correctamente"
        Else
          MsgBox "Los datos no fueron cargados, intentar de nuevo"
         End If
'cierro el internet explorer
IE.Quit
Set IE = Nothing
  End Sub
------------------------------------------------------ FIN CÓDIGOS
En este código sumamos los conserva las características de los dos códigos, por un lado el de la  plantilla entrada-salida de stock y el de rellenar el formulario. Es decir además de guardar los datos en la web los seguimos guardando en la hoja “stock”. Esto se puede simplificar sacando esta parte porque además tenemos nuestro método de verificación para saber si los datos han sido enviados o no. Sin embargo, depende de la nuestra aplicación puede ser necesario cargar los datos en el formulario sin tener internet por lo que en algunos casos puede ser necesario conservar la hoja local, en este caso “stock” y así tener duplicado los datos.

Una vez que tenemos cargados los datos los podemos consultar en cualquier momento incluso compartirlos. Se podrían hacer informes, etc. Los usos son ilimitados o simplemente limitados por la imaginación de cada uno.
¡Esperamos que les haya gustado la idea y vean lo fácil que es!

Recuerden que los artículos algunas veces requieren un mayor o menor nivel de conocimiento en ciertos temas de Excel, por ejemplo formulas avanzadas, macros o VBA, etc. Sin embargo en los artículos se nombran todos los elementos y con esta información podemos hacer nuestras pequeñas investigaciones usando internet, así desarrollamos nuestro conocimiento. Por ejemplo si  utilizamos la función “Y”, que la suponemos conocida, y no sabemos ¿qué es? podemos buscar en internet para ver como se utiliza y cuáles son los componentes. Las mini aplicaciones no son más que la recopilación de muchos elementos para dar forma a una nueva idea.

Pueden descargar algunos ejemplos (plantillas/templates) de la zona de Descargas. Si tienen alguna duda o consulta pueden hacerlo a través del formulario de contacto.

Les recomendamos que sigan el blog por alguno de los medios, mail o por redes sociales, para recibir las actualizaciones y novedades.

¡Éxitos!

Keys:
·         VBA to Enter Data Online and Submit Form
·         Populate HTML form using Excel/VBA
·         Populate Internet Textbox, Fill Forms, click Submit using Excel
·         Automatic Form Filling using data stored in an Excel file
·         Excel - Populate Html Form Using Excel/vba.
·         Rellenar formulario Web con Excel
·         Rellenar formulario HTML con VBA en Excel.
·         Sincronizar Google Docs con Excel.

·         Sincronizar hoja de cálculo de google con Excel.

9 comentarios:

Juan García dijo...

Excelente gracias por compartir los conocimientos

Juan Pablo Torres dijo...

Gracias a ti por tus comentarios!

Edgar Alberto Bervergi dijo...

En caso de usar google chrome cono modificaria el codigo?

Edgar Alberto Bervergi dijo...

de donde obtenes el el numerpo de entrada o "entry.0000000000" que le corresponde a cada campo?

Juan Pablo Torres dijo...

Hola amigo, cómo esta! Esta en el artículo anterior. Eso lo obtienes del objeto. Esta dentro del código de la página pero lo puedes obtener con la ayuda de las herramientas de desarrollador del explorador.
Esperamos tus comentarios.
Saludos

Jorge Ferrer dijo...

Hola, tambien se puede trabajar sobre el codigo que indica chrome? O solo IE ...

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, como decimos en el artículo, es solo para IE ya que como vba es de microsoft cae de maduro. Sin embargo, algunas veces puede haber una forma pero hay que usar cosas avanzadas que no valen la pena quizás la complejidad y además no lo puede hacer cualquier persona sino un programador o alguien con un dominio amplio.
Saludos

jhan maquera dijo...

Hola, mi pregunta es: Si creo mi Excel con un formulario en especifico y este lo van a usar muchas otras personas que van a estar llenando informacion, habra un problema de compatividad cierto??

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
Con este tipo de formularios no vas a tener problema, la nueva información se coloca automáticamente una debajo de otra no importa la cantidad de personas que la estén llenando.
Esperamos tus comentarios.
Saludos