Clever-Excel-Forum

Normale Version: Datenbankerstellung per Webabfrage in Excel
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,
ich möchte per Webabfrage externe Daten aus dem Internet in eine Exceltabelle einspeisen und periodisch aktualisieren. Das geht ja problemlos in Excel. Allerdings überschreibt Excel bei der Aktualisierung die alten Werte automatisch. Ich möchte aber eine Art Datenbank erstellen d.h., dass ich auch mit den "alten" Werten weiterhin arbeiten möchte. Ich habe schon viel im Internet gelesen, allerdings nichts passendes gefunden. Daher hier mal meine Frage, ob jemand eine Idee dazu hat? 

Vielen Dank im Voraus und liebe Grüße!
Moin,

speichere einfach die Blätter vor der Aktualisierung ab und fasse diese bei Bedarf beispielsweise mit PivotTable zusammen.
Erstmal Danke für die schnelle Antwort! Kann man das auch per Makro automatisch ausführen lassen? Die Datenbank soll sich jede Stunde automatisch aktualisieren, da ist es sehr lästig wenn man dann jedes mal von Hand speichern muss.
Ich denke schon, dass es geht. Aber ich denke auch, dass du da schnell an die Grenzen des Excel kommst. Wahrscheinlich ist hier eine echte Datenbank viel sinnvoller, weil sich doch wohl rasch ziemlich viele Daten ansammeln.
hmm..okay. weiß trotzdem jemand wie man das am einfachsten über ein makro laufen lässt?
Ja, ich (wäre auch traurig, wenn nicht Blush )

Aber "einfach" ist das nicht! Aber im Sinne so ziemlich aller Fachforen, nämlich Hilfe zur Selbsthilfe anzubieten: Schau dir mal Application.OnTime an und ergründe vor allen Dingen im Netz auch die Tücken, welche diese Anweisung in sich birgt. - Auf der anderen Seite: Ein erfahrener Dienstleister nimmt dir das Coden gewiss gerne ab. Und wenn es nur für private Zwecke ist, dann eben selbst programmieren und mit eventuellen Misserfolgen leben lernen.
Habe schon viel im Internet dazu gelesen und auch schon ein bisschen selbst programmiert. Ausgangspunkt war ein Application.OnTime Code. Habe das mal als Basis genommen: http://www.vb-fun.de/cgi-bin/loadframe.p...0087.shtml
Und dann per Makrorekorder den Befehl aufgenommen Spalte A unter relativen Bezügen in Spalte B zu verschieben. Das hat soweit auch funktioniert. Leider ist aber die Abfrage ja nur in Spalte A gespeichert. Ich bräuchte also einen Code der automatisch alle 60 Minuten die Inhalte von Spalte A in Spalte B und dann in Spalte C und so weiter kopiert. Diesen könnte ich ja dann mit dem oben genannten Code koppeln und dann sollte das ja funktionieren oder? Leider weiß ich nicht wie der "Kopiercode" aussehen müsste. Kannst du mir da helfen? Und macht die Vorgehensweise so überhaupt Sinn?
Hi,

(06.03.2016, 22:53)copamundial schrieb: [ -> ]Und dann per Makrorekorder den Befehl aufgenommen Spalte A unter relativen Bezügen in Spalte B zu verschieben.

Du solltest die Daten nicht verschieben, sondern die Spalte kopieren und in B nur die Werte einfügen.

Wenn Du dann noch vorher die erste freie Spalte ermittelst, weißt Du auch, wohin die Daten eingefügt werden können.

Code:
Dim lngLetzteSpalte as Long
Dim lngErsteFreieSpalte as Long

lngLetzteSpalte = ActiveSheet.Cells(4, Columns.Count).End(xlToLeft).Column           'letzte belegte Spalte in Zeile D (4), anpassen!
lngErsteFreieSpalte = lngLetzteSpalte + 1
Hallöchen,

wenn die Reihenfolge anders herum sein kann, bräuchtest Du einfach nur Spalte A bis zur vorletzten kopieren und dann in B1 Werte einfügen.
Hallo,

wie sähe denn ein entsprechender Code aus? Ich müsste ja einen Application on Time Befehl mit dem Kopieren Befehl verbinden oder? Kenne mich leider mit VBA kaum aus von daher stehe ich da vor einem Problem... Habe es mal so versucht, funktioniert aber leider nicht.
Code:
Sub Intervall()

    Dim NextTime As Date
    NextTime = Now + TimeValue("00:15:00")  'Zeitintervall festlegen, hier 15 Minuten
    Application.OnTime NextTime, "Intervall"
    Call My_Procedure    'Eingabe von Schritt, der wiederholt werden soll

End Sub
Sub My_Procedure()
    Dim lngLetzteSpalte As Long
Dim lngErsteFreieSpalte As Long

lngLetzteSpalte = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column           'letzte belegte Spalte in Zeile D (4), anpassen!
lngErsteFreieSpalte = lngLetzteSpalte + 1
End Sub
Seiten: 1 2