vba google-docs excel-2003 google-spreadsheet

Cómo escribir en una "hoja de cálculo de Google" desde Excel 2003 VBA



google-docs excel-2003 (3)

Tengo un archivo de Excel 2003 con una línea similar a esta:

Necesito hacer clic en "el botón" y agrega esa línea como la última en una hoja de cálculo de Google

Similar a:

¿Es posible?

¿Debería usar las herramientas de Google de la línea de comandos?

¿Hay una mejor manera? ¿Manera más fácil?

¿Como lo harias?

(Una vez que sé cómo agregar "cosas" de VBA a Google Docs , ¿cómo puedo agregarlo a la última línea?)

Más información: Tengo un "programa" de Excel 2003 que guarda todas las ventas de la compañía (con la información del cliente), y me gustaría hacer una libreta de direcciones global que sea actualizada fácilmente por mis (no) compañeros de trabajo.


Comencé a responder tu pregunta, pero me di cuenta de que era mucho menos trivial de lo que pensaba cuando comencé a jugar con la API de OAuth 2.0 . Creo que sería mucho más fácil si pudieras hacer pública tu hoja de cálculo de Google, pero dudo que sea aconsejable con los datos de ventas.

La razón por la cual esto no es trivial es la parte de autenticación. El ASP OAuth a continuación probablemente sea útil con algo de trabajo, pero noté que usa variables de Sesión y algunos otros objetos ASP, por lo que tendría que hacer muchos ajustes.

En esa luz, aquí está mi respuesta original, si ayuda.

Hay una API de hoja de cálculo de Google: https://developers.google.com/google-apps/spreadsheets/#adding_a_list_row

El enlace de OAuth 2.0 al que hacen referencia los documentos de la hoja de cálculo está desactualizado. Aquí puedes jugar con las solicitudes de OAuth, lo que debería ayudarte a comenzar.

Las solicitudes GET / POST llaman a las funciones API con XML, que puede llamar utilizando el objeto XMLHTTP.

En primer lugar, haga referencia a Microsoft XML en su proyecto de Excel (Herramientas-> Referencias-> Microsoft XML, v6.0)

En su VBA, básicamente utiliza lo siguiente para enviar solicitudes XML:

Dim x as MSXML2.XMLHTTP Set x = New MSXML2.XMLHTTP x.Open "POST", "http://example.com/", False x.Send "<xmldata></xmldata>"

Debería poder adaptar esta biblioteca OAuth 2.0 ASP para su código VBA.

Este es un ejemplo ASP de cómo usar esa biblioteca OAuth; nuevamente ya que tanto el ASP como el VBA están usando la sintaxis de VBScript, probablemente podría adaptarse.


  • En lugar de usar VBA en Excel, use una aplicación VB.NET completa con el paquete Excel Interop COM. Su sintaxis es en gran medida similar a los comandos de VBA, pero hacer la transferencia a Google Docs será mucho más fácil en VB.NET.

  • Use la API de la lista de documentos de Google para crear una nueva hoja de cálculo.

  • Use la API de Google Spreadsheets para mover los datos a su hoja de cálculo en línea.

Ambas API de Google son API REST, por lo que tendrás que usar objetos HttpRequest en VB.NET. Aquí hay un gran ejemplo de cómo usarlos, simplemente cambie las URL para que sean apropiadas para Google. Google Spreadsheets incluso ofrece una biblioteca que abstrae muchos de esos pasos.


No necesita OAuth ni la API de la hoja de cálculo. Google Spreadsheet permite la entrada de datos con un formulario simple, lo que significa también que un HTTP POST servirá. Solo debe preparar su hoja de cálculo para aceptar las entradas de datos a través de un formulario de la siguiente manera:

  • Ingresa a tu cuenta de Google Docs
  • Crea una hoja de cálculo o abre una existente
  • Haga clic en Herramientas / Crear un formulario
  • Agregue algo en la descripción del formulario solo para habilitar el botón Guardar
  • Guarde el formulario
  • Copie el valor de la clave de formulario que se muestra en el enlace en la parte inferior de la página de creación de formularios.
  • Ahora puedes publicar una publicación simple en la hoja de cálculo sin OAuth

Puede probar la entrada ahora con curl si lo tiene en su sistema (reemplace el marcador de posición de formkey con la clave de formulario de su tabla):

curl.exe -v -k "http://spreadsheets.google.com/formResponse?formkey=<formkey>" -d "entry.0.single=test&entry.1.single=test2&pageNumber=0&backupCache=&submit=Submit"

A continuación, intentamos ejecutar el formulario POST desde nuestra hoja de Excel mediante el siguiente código. Agregue una referencia a "Microsoft XML, v3.0" antes. Reemplace column1 con sus valores deseados.

Dim httpRequest as XMLHTTP Set httpRequest = New XMLHTTP httpRequest.Open "POST", "http://spreadsheets.google.com/formResponse?formkey=<formkey>&amp;ifq", False httpRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" httpRequest.Send "entry.0.single=" + column1 + "&entry.1.single=" + column2 + "&pageNumber=0&backupCache&submit=Submit" ''Check result in the following vars httpRequest.status httpRequest.statusText

Espero que ayude