5 Stimmen

Wie man mit Excel 2003 VBA in ein "Google Spreadsheet" schreibt

Ich habe eine Excel 2003 Datei mit einer Zeile ähnlich der folgenden:

enter image description here

Ich muss klicken "der Knopf" und fügt diese Zeile als letzte in einer Google Tabellenkalkulation

Ähnlich wie:

enter image description here

Ist das möglich?

Sollte ich die Google-Befehlszeilen-Tools verwenden?

Gibt es einen besseren Weg? Einen einfacheren Weg?

Wie würden Sie es tun?

(sobald ich weiß, wie man "Zeug" aus VBA a Google Docs wie zum Teufel füge ich es in die letzte Zeile ein?)

Mehr Informationen: Ich habe eine Excel 2003 "Programm", das alle Verkäufe des Unternehmens (mit den Kundeninformationen) speichert, und ich möchte ein globales Adressbuch erstellen, das von meinen (nicht it-) Mitarbeitern leicht aktualisiert werden kann.

0 Stimmen

Bei allem Respekt, aber es sieht so aus, als ob Sie nach einer vollständigen Code-Lösung fragen. Dafür ist SO nicht gedacht. Was haben Sie bis jetzt versucht? Schauen Sie sich die Google Docs API und wenn Sie eine spezifisch Wenn Sie eine Frage haben, kommen Sie wieder und stellen Sie sie. Abstimmung zum Abschluss als "keine echte Frage".

0 Stimmen

Es ist nicht wirklich das, was ich suche (vollständige Lösung), nur ein Tritt in die richtige Richtung von jemandem, der das schon "erlebt" hat... Einfach so: Ich würde diese Lib verwenden und diesen Weg gehen... Nicht: Das ist die Lösung.... . Tut mir leid, wenn meine Frage auf diese Weise erschien.

8voto

ChrLipp Punkte 15255

Sie brauchen weder OAuth noch die Tabellenkalkulations-API. Google Spreadsheet ermöglicht die Dateneingabe über ein einfaches Formular, was auch bedeutet, dass ein HTTP POST ausreicht. Sie müssen Ihre Tabellenkalkulation nur wie folgt vorbereiten, um Dateneingaben über ein Formular zu akzeptieren:

  • Melden Sie sich bei Ihrem Google Docs-Konto an
  • Erstellen Sie ein Arbeitsblatt oder öffnen Sie ein bestehendes Arbeitsblatt
  • Klicken Sie auf Tools / Formular erstellen
  • Fügen Sie etwas in die Formularbeschreibung ein, nur um die Schaltfläche Speichern zu aktivieren.
  • Speichern Sie das Formular
  • Kopieren Sie den Wert des Formularschlüssels, der in dem Link unten auf der Seite zur Formularerstellung angezeigt wird
  • Jetzt können Sie einen einfachen Beitrag in die Tabelle ohne OAuth erstellen

Sie können den Eintrag jetzt mit locken. wenn Sie es in Ihrem System haben (ersetzen Sie den Platzhalter formkey durch den formkey aus Ihrer Tabelle):

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"

Als Nächstes versuchen wir, das Formular POST aus unserem Excel-Blatt über den folgenden Code auszuführen. Fügen Sie zuvor einen Verweis auf "Microsoft XML, v3.0" hinzu. Ersetzen Sie Spalte1 durch Ihre gewünschten Werte.

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

Ich hoffe, das hilft

4voto

transistor1 Punkte 2845

Ich hatte begonnen, Ihre Frage zu beantworten, musste aber feststellen, dass sie viel weniger trivial war, als ich dachte, als ich anfing, mit der OAuth 2.0 API . Ich denke, es wäre viel einfacher, wenn Sie Ihre Google-Tabelle veröffentlichen könnten, aber ich bezweifle, dass das bei Verkaufsdaten ratsam ist.

Der Grund dafür, dass dies nicht trivial ist, ist der Teil der Authentifizierung. Die ASP OAuth unten ist wahrscheinlich brauchbar mit etwas Arbeit, aber ich bemerkte, dass es Session-Variablen und einige andere ASP-Objekte verwendet, so dass Sie eine Menge von Zwicken tun müssen.

Vor diesem Hintergrund möchte ich meine ursprüngliche Antwort wiederholen, falls dies hilfreich ist.

Es gibt eine Google Spreadsheet API: https://developers.google.com/google-apps/spreadsheets/#adding_a_list_row

Der OAuth 2.0-Link, auf den die Tabellenkalkulationsdokumente verweisen, ist veraltet. Sie können mit den OAuth-Anfragen spielen aquí die Ihnen den Einstieg erleichtern soll.

API-Funktionen werden durch GET/POST-Anfragen mit XML aufgerufen, die Sie mit dem XMLHTTP-Objekt aufrufen können.

Verweisen Sie zunächst auf Microsoft XML in Ihrem Excel-Projekt (Extras->Referenzen->Microsoft XML, v6.0)

In Ihrer VBA verwenden Sie im Wesentlichen Folgendes, um XML-Anfragen zu senden:

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

Sie sollten in der Lage sein, sich anzupassen diese OAuth 2.0 ASP-Bibliothek für Ihren VBA-Code.

Dies ist ein ASP-Beispiel Da sowohl ASP als auch VBA die VBScript-Syntax verwenden, kann sie wahrscheinlich angepasst werden.

1voto

Peter Punkte 11

Ich habe die letzten Tage damit verbracht, eine gute und einfache Lösung für dieses Problem zu finden.

Keine schien für mich zu funktionieren, also musste ich Teile aus verschiedenen Beiträgen verwenden, die ich im Internet fand.

Folgende Schritte sind zu beachten:

  • Eine Google-Tabelle erstellen
  • Erstellen Sie ein Formular (unter "Tools" - "Formular erstellen") mit drei Feldern (Sie können später nach dem Testen weitere Felder hinzufügen)

Gehen Sie zurück zur Google-Kalkulationstabelle, und es sollte ein neues Blatt (mit der Bezeichnung "Formularantworten") mit Überschriften erstellt worden sein, die den bei der Einrichtung des Formulars angegebenen Feldnamen entsprechen. Spalte A erhält automatisch die Überschrift "Zeitstempel", während die Spalten B, C und D mit den Namen Ihrer Felder überschrieben werden usw.

  • Klicken Sie nun auf "Formular" - "Go to Live Form"
  • Schreib-Klick und "Untersuchen" (Strg-Umschalt-I) und Klick auf Netzwerk
  • Geben Sie einige Daten (irgendetwas) für jedes der entsprechenden Felder ein und klicken Sie auf "Senden".
  • Klicken Sie auf "Kopfzeilen" Klicken Sie auf "formResponse".
  • Kopieren Sie unter "Allgemein" die URL des Formulars. Beachten Sie, dass ein "?" am Ende der URL erforderlich ist.
    Unter Überschriften finden Sie auch "Formulardaten". Diese werden in MyURL verwendet. Suchen Sie den Eintrag.123456789 für jedes der Felder. Sie benötigen diese Nummern für jedes Feld.
  • Ersetzen Sie xxxxxxxx in Ihrem Code durch die entsprechenden Nummern Ihres Formulars.
  • Öffnen Sie Ihr Excel-Tabellenblatt und kopieren Sie die nachstehende Unterroutine hinein
  • Klicken Sie im VBA-Editor auf Werkzeuge - Referenzen wählen Sie die Microsoft XML.v3.0, (Microsoft XML Core Services)

Code:

Sub Write_Info_To_Google()
    Dim ScriptEngine
    Dim http As Object
    Dim myURL As String
    Set http = CreateObject("MSXML2.ServerXMLHTTP")
    Set ScriptEngine = CreateObject("MSScriptControl.ScriptControl")
    ScriptEngine.Language = "JScript"
    ScriptEngine.AddCode "function encode(str) {return encodeURIComponent(str);}"

    myURL = "https://docs.google.com/forms/d/e/ . . . . /formResponse?" & _
            "entry.xxxxxxxxx=" + Cells(2, 1).Text + _
            "&entry.yyyyyyyyy=" + Cells(2, 2).Text + _
            "&entry.zzzzzzzzz=" + Cells(2, 3).Text
    http.Open "GET", myURL, False
    http.setRequestHeader "User-Agent", "Google Chrome 70.03538.102 (compatible; MSIE _ 
    6.0; Windows NT 5.0)"
    http.send
End Sub

Führen Sie dieses Makro aus und beobachten Sie, wie Ihre Daten aus Zeile 2 in der Google-Tabelle erscheinen

0voto

  • Anstatt VBA in Excel zu verwenden, sollten Sie eine vollwertige VB.NET-Anwendung mit dem Excel Interop COM-Paket verwenden. Die Syntax ist den VBA-Befehlen weitgehend ähnlich, aber die Übertragung zu Google Docs ist in VB.NET viel einfacher.

  • Verwenden Sie die Google Dokumente Liste API um ein neues Arbeitsblatt zu erstellen.

  • Verwenden Sie die Google Spreadsheets API um die Daten in Ihr Online-Tabellenblatt zu übertragen.

Beide Google-APIs sind REST-APIs, so dass Sie HttpRequest-Objekte in VB.NET verwenden müssen. Hier ist eine großartiges Beispiel wie sie zu verwenden sind, ändern Sie einfach die URLs, damit sie für Google geeignet sind. Google Spreadsheets bietet sogar eine Bibliothek die viele dieser Schritte abstrahiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X