Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1660to1664
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro, dass stündlich Werte auflistet zum Vergl.

Makro, dass stündlich Werte auflistet zum Vergl.
14.12.2018 14:15:16
Christian
Hallo an euch alle,
ich wollte mal fragen, ob dies per Makro lösbar ist, da ich schwer 24 Stunden am Rechner sitzen kann um händig stündlich die Daten in die Tabelle zu kopieren.
Mein Ziel ist, dass das Makro diese Tabelle füllt:
https://www.herber.de/bbs/user/126109.xlsx
Was das Makro hierfür tun müsste ist eigentlich recht simpel,
in der Mappe gibt es 8 Datenverbindungen zu Internetseiten, die jeweils beim Öffnen der Mappe und dann alle 5 Minuten aktualisiert werden, so dass sich der Inhalt von Tabelle1 Spalte B theoretisch alle 5 Minuten ändern könnte.
WAs ich mir von dem Makro wünsche ist dass es automatisch zur vollen Stunde ausgeführt wird und in die Spalte in Tabelle4 mit der passenden Uhrzeit mit den gewünschten Informationen füllt. In welcher Zelle die jeweils gewünschte Information steht habe ich in Spalte A in Klammern geschrieben.
Ist das machbar?
Danke
Christian
PS: Ja die Datenverbindungen sucht ihr in der Bsp Tabelle vergebens, ich habe sie absichtlich weggelassen, weil die Internetadressen die Koordinaten meines Wohnortes beinhelten.

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro, dass stündlich Werte auflistet zum Vergl.
14.12.2018 14:59:34
Hajo_Zi
Hallo Christian,
das geht nicht, da eine XLSX Datei kein Makro enthalten kann.
Ich sehe keinen Grund eine Datei 2x zu speichern. Ich führe keine Liste unter welchem Dateinamen ich die Datei gespeichert habe.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: Makro, dass stündlich Werte auflistet zum Vergl.
14.12.2018 15:39:45
Hajo_Zi
Halo Christian,
ich habe jetzt eine ander Startzeit gewählt. Ich habe die Stunde wiederholung nicht getestet.
Option Explicit
Sub Start()
Application.OnTime TimeValue("15:38"), "Kopieren"
End Sub
Sub Kopieren()
Range("A2:A7").Copy Cells(Hour(Now) + 2, 2)
Application.OnTime Now + Now + "1:00" * 1, "Kopieren"
End Sub
Gruß Hajo
Anzeige
AW: Makro, dass stündlich Werte auflistet zum Vergl.
14.12.2018 16:31:18
Christian
Hallo Hajo,
irgendwie hab ich das Gefühl mich blöd ausgedrückt zu haben,
Hab zwar wenig Ahnung von Makros, aber Range("A2:A7").Copy heißt für mich, dass A2 bis A7 kopiert wird und in die je nach Uhrzeit entsprechenden Zellen eingefügt wird.
Aber es soll ja nicht A2:A7 kopiert werden, sondern aus Tabelle 1 die Zellen B4, B5, B16, B18, B19 und B22.
Gruß
Christian
AW: Makro, dass stündlich Werte auflistet zum Vergl.
14.12.2018 16:36:31
Christian
ich suche wirklich nur ein Makro dass stündlich den Inhalt der 6 genannten Zellen aus Tabelle 1 in die dazu passende Zele in Tabelle 4 kopiert.
AW: Makro, dass stündlich Werte auflistet
14.12.2018 19:49:03
Karl-Heinz
Hallo Christian,
falls noch Bedarf besteht. So könnte man es machen (ungetestet).
Sub Kopieren()
  Dim Zeile As Long, Felder() As String
'Hier die Quelladressen eintragen
  Felder = Split("B4,B5,B18,B19,B16,B22", ",")
  For Zeile = 2 To 7
  Sheets("Tabelle4").Cells(Zeile, Hour(Now) + 2).Value = Sheets("Tabelle1").Range(Felder(Zeile - 2)).Value
  Next Zeile
  Application.OnTime TimeValue(Right$("00" & Hour(Now) + 1, 2) & ":00:00"), "Kopieren"
End Sub

VBA=>HTML, (c) 2018 by KHV

Ggf. noch nachfeilen.
viele Grüße
Karl-Heinz
Anzeige
AW: Makro, dass stündlich Werte auflistet
14.12.2018 22:51:28
Christian
Hallo Karl-Heinz,
danke erstmal für deine Mühe.
was die aktuelle Uhrzeit anbelangt, klappt das schon so gut wie, die Sachen werden in die richtige Spalte kopiert.
Das einzige was nicht klappt, die Zahlen in B16, B18 und B19 haben 3 Nachkommastellen, das Makro rundet die Ausgabe auf 2 Nachkommastellen.
Aber ich bin weiterhin überfragt, wie ich das jetzt hinbekomme dass ich die Excel Datei mal 24 Stunden geöffnet lassen kann und das Makro dann automatisch zu jeder vollen Stunde gestartet wird.
Danke Chrisian
AW: Makro, dass stündlich Werte auflistet
14.12.2018 23:19:42
Werni
Hallo Christian
Starte dieses Makro
Public Sub StartTimeCounter()
Application.OnTime Now + TimeValue("1:00:00"), "DeinMakroName"
End Sub 
Bei "DeinMakroName" gibst du den Makronamen an der ausgeführt werden soll.
Das wiederholt sich dann eine Stunde später automatisch.
Gruss werni
Anzeige
AW: Makro, dass stündlich Werte auflistet
14.12.2018 23:43:36
Werni
Hallo nochmal ich
Damit nach einer Stunde noch nicht Ende ist noch ein Zusatz.
Public Sub StartTimeCounter()
Application.OnTime Now + TimeValue("1:00:00"), "DeinMakroName"
StartTimeCounter
End Sub

Gruss werni
AW: Makro, dass stündlich Werte auflistet
15.12.2018 00:08:22
Karl-Heinz
Hallo Christian,
das Makro rundet nicht. Du brauchst nur im Zielblatt die Zahlenformatierung anpassen. Auch läuft das Timing. Hatte grade mal gecheckt.
Hier ein Update, damit auch der Übergang von 24 Uhr auf 0 Uhr klappt.
Sub Kopieren()
  Dim Zeile As Long, Felder() As String, T As String
'Hier die Quelladressen eintragen
  Felder = Split("B4,B5,B18,B19,B16,B22", ",")
  For Zeile = 2 To 7
  Sheets("Tabelle4").Cells(Zeile, Hour(Now) + 2).Value = Sheets("Tabelle1").Range(Felder(Zeile - 2)).Value
  Next Zeile
  T = Right$("00" & Hour(Now) + 1, 2) & ":00:00"
  If T = "24:00:00" Then T = "00:00:00"
  Application.OnTime TimeValue(T), "Kopieren"
End Sub

VBA=>HTML, (c) 2018 by KHV
Vorgehensweise:
Makro wird manuell angestoßen, setzt die ersten Übernahmen und ruft sich selbst zur nächsten vollen Stunde wieder auf usw., bis die Datei zugemacht wurde.
VG KH
Anzeige
AW: Makro, dass stündlich Werte auflistet
15.12.2018 07:54:27
Christian
Hallo Karl-Heinz, hallo Werner,
ich fürchte es gibt immer noch Unklarheiten, was die Zeiten anbelangt, wann das Makro gestartet werden soll.
Mein Ursprünglicher Gedanke war, ich gehe irgendwann abends ins Bett, in der Regel vor Mitternacht, öffne die Datei, starte von mir aus auch das Makro, aber das ganze soll nicht 24 Stunden ab dem Öffnen der Datei abbilden, sondern einen Kalendertag von 0 bis 23 Uhr, sprich egal wann ich das Makro starte, mit dem Eintragen soll es um Mitternacht beginnen und dann einen Kalendertag lang die Werte eintragen.
Zu der Sache mit den Rundungen, in B18 steht gerundet 1,468, dein Makro gibt 1,47 aus, ändere ich das Zellformat in 3 Nachkommastellen, steht da leider nicht 1,468 sondern 1,470.
Gruß
Christian
Anzeige
kann das Problem mit der Rundung weiter eingrenzen
15.12.2018 08:39:53
Christian
Formatiere ich B16, B18 und B19 als Zahl mit 3 Nachkommastellen, entstehen keine Rundungsfehler, die Fehler entstehen, sobald ich die Zellen als Währung mit 3 Nachkommastellen formatiere
AW: kann das Problem mit der Rundung weiter eingrenzen
15.12.2018 15:41:26
Karl-Heinz
Hallo Christian,
Dein Anliegen war nicht klar....
Hier eine Erweiterung:
Sub Starten()
  Application.OnTime TimeValue("00:00:00"), "Kopieren"
End Sub
Sub Kopieren()
  Dim Zeile As Long, Felder() As String, T As String
'Hier die Quelladressen eintragen
  Felder = Split("B4,B5,B18,B19,B16,B22", ",")
  For Zeile = 2 To 7
  Sheets("Tabelle4").Cells(Zeile, Hour(Now) + 2).Value = Sheets("Tabelle1").Range(Felder(Zeile - 2)).Value
  Next Zeile
  If Hour(Now) >= 23 Then Exit Sub
  Application.OnTime TimeValue(Right$("00" & Hour(Now) + 1, 2) & ":00:00"), "Kopieren"
End Sub

VBA=>HTML, (c) 2018 by KHV
Starte anstoßen, dann geht es ab 00:00.00 Uhr los. Ab 23:00:00 erfolgt keine weitere Bearbetiung.
So sollte es jetzt funktionieren.
Und noch einmal: Das Makro kürzt keine Zahlen. Es ist eine Sache der Formatierung!
viele Grüße aus Südhessen
Karl-Heinz
Anzeige
AW: kann das Problem mit der Rundung weiter eingrenzen
15.12.2018 16:07:40
Christian
Hallo nach Südhessen,
danke nochmal für deine Hilfe.
Hier mal ein Beispiel das hoffe ich verdeutlicht, was ich meine:
https://www.herber.de/bbs/user/126130.xlsm
ja, ich habe 2 Änderungen vorgenommen am Makro, einmal eine zusätzliche Abfrage der Zelle S1 eingefügt, sowie die Abfrage für B22 in A22 geändert.
Tabelle1!S1 ist als Zahl mit 3 Nachkommastellen formatiert und wird vom Makro auch genau so übernommen.
Die Zellen B16, B18 und B19 sind als Währung mit 3 Nachkommastellen formatiert und an meiner Beispieldatei sieht man dass da auf 2 Stellen gerundet wurde.
Gruß
Christian
Anzeige
AW: kann das Problem mit der Rundung weiter eingrenzen
15.12.2018 16:11:43
Werner
Hallo Christian,
wer oder was hindert dich denn daran einfach die Zielspalte entsprechend zu formatieren?
Das Makro übernimmt nur die Werte aus der Quellspalte und nicht deren Formatierungen.
Gruß Werner
AW: kann das Problem mit der Rundung weiter eingrenzen
15.12.2018 16:18:27
Christian
Hallo Werner, dann geh mal bitte hin und formatier in der gerade hochgeladenen Bsp.Tabelle den Bereich Tabelle4!Q5:Q7 als Währung mit 3 Nachkommastellen anstatt Zahl mit 3 Nachkommastellen, wie in der Bsp Datei. Du wirst sehen, es bleibt die gerundete Zahl, in Tabelle1!B18 steht 1,447 €, in Tabelle4!Q5 steht 1,450 € dadurch ändert sich auch nichts, wenn ich Q5 anders formatiere.
Gruß
Christian
Anzeige
Vor dem Makrolauf formatieren. o.w.T.
15.12.2018 16:23:15
Werner
AW: Vor dem Makrolauf formatieren. o.w.T.
15.12.2018 16:32:47
Christian
Hallo Werner,
das hab ich natürlich auch probiert. In der Tabelle hier ist der komplette Bereich Tabelle4!B5:Y7 als Währung mit 3 Nachkommastellen formatiert, nach dem Ausführen des Makros ist der Bereich benutzerdefiniert vom Typ #.##0,000 _€ formatiert.
Aber weißt du was ich ändere das Format von Tabelle1!B16:B19 dann hab ich meine Ruhe.
Gruß
Christian
ansonsten über copy und pastespecial..
15.12.2018 16:30:12
Werner
Hallo Christian,
diese Codezeile löschen:
Sheets("Tabelle4").Cells(Zeile, Hour(Now) + 2).Value = Sheets("Tabelle1").Range(Felder(Zeile - 2)).Value
und durch die zwei ersetzen:
Sheets("Tabelle1").Range(Felder(Zeile - 2)).Copy
Sheets("Tabelle4").Cells(Zeile, Hour(Now) + 2).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
und dann noch vor End Sub diese Codezeile einfügen:
Application.CutCopyMode = False
Gruß Werner
Anzeige
AW: ansonsten über copy und pastespecial..
15.12.2018 17:43:38
Christian
Hallo,
irgendwie will es immer noch nicht, beim ersten mal ausführen ging es, aber eine Stunde später kam eine Fehlermeldung, das Makro würde nicht gefunden oder kann nicht ausgeführt werden und direkt nach wegklicken der Meldung startet das alle 5 Minuten Aktualisieren der Verbindungen.
Dann bin ich jetzt hingegangen und habe die Aktualisierung alle 5 Minuten abgeschaltet und dafür dem Makro gesagt es soll vor dem Kopieren der Daten die Verbindungen aktualisieren:

Sub Starten()
Application.OnTime TimeValue("00:00:00"), "Kopieren"
End Sub
Sub Kopieren()
Dim Zeile As Long, Felder() As String, T As String
'Hier die Quelladressen eintragen
ActiveWorkbook.RefreshAll
Felder = Split("B4,B5,S1,B18,B19,B16,A22", ",")
For Zeile = 2 To 8
Sheets("Tabelle1").Range(Felder(Zeile - 2)).Copy
Sheets("Tabelle4").Cells(Zeile, Hour(Now) + 2).PasteSpecial Paste:= _
xlPasteValuesAndNumberFormats
Next Zeile
If Hour(Now) >= 23 Then Exit Sub
Application.OnTime TimeValue(Right$("00" & Hour(Now) + 1, 2) & ":00:00"), "Kopieren"
Application.CutCopyMode = False
End Sub
Nur auf diesem Weg werden die Werte kopiert, bevor alle 7 Datenverbindungen aktualisiert wurden, gibt es die Möglichkeit da zwischen aktualisieren und kopieren 1 Minute zu legen, damit die Daten vor dem Kopieren vollständig aktualisiert werden?
Gruß
Christian
AW: ansonsten über copy und pastespecial..
15.12.2018 18:50:53
Karl-Heinz
Du könntest einen Sleep dazwischen setzen.
'Declare 32 Bit
Public Declare Sub Sleep Lib "kernel32" (ByVal dwmilliseconds As Long)
Sub Starten()
  Application.OnTime TimeValue("00:00:00"), "Kopieren"
End Sub
Sub Kopieren()
  Dim Zeile As Long, Felder() As String, T As String
'Hier die Quelladressen eintragen
  ActiveWorkbook.RefreshAll
  Sleep 60000
  Felder = Split("B4,B5,S1,B18,B19,B16,A22", ",")
  For Zeile = 2 To 8
  Sheets("Tabelle1").Range(Felder(Zeile - 2)).Copy
  Sheets("Tabelle4").Cells(Zeile, Hour(Now) + 2).PasteSpecial Paste:= _
xlPasteValuesAndNumberFormats
  Next Zeile
  If Hour(Now) >= 23 Then Exit Sub
  Application.OnTime TimeValue(Right$("00" & Hour(Now) + 1, 2) & ":00:00"), "Kopieren"
  Application.CutCopyMode = False
End Sub

VBA=>HTML, (c) 2018 by KHV

Wartet Excel nicht, bis der Refresh abgeschlossen ist?
VG KH
AW: ansonsten über copy und pastespecial..
15.12.2018 18:51:04
Karl-Heinz
Du könntest einen Sleep dazwischen setzen.
'Declare 32 Bit
Public Declare Sub Sleep Lib "kernel32" (ByVal dwmilliseconds As Long)
Sub Starten()
  Application.OnTime TimeValue("00:00:00"), "Kopieren"
End Sub
Sub Kopieren()
  Dim Zeile As Long, Felder() As String, T As String
'Hier die Quelladressen eintragen
  ActiveWorkbook.RefreshAll
  Sleep 60000
  Felder = Split("B4,B5,S1,B18,B19,B16,A22", ",")
  For Zeile = 2 To 8
  Sheets("Tabelle1").Range(Felder(Zeile - 2)).Copy
  Sheets("Tabelle4").Cells(Zeile, Hour(Now) + 2).PasteSpecial Paste:= _
xlPasteValuesAndNumberFormats
  Next Zeile
  If Hour(Now) >= 23 Then Exit Sub
  Application.OnTime TimeValue(Right$("00" & Hour(Now) + 1, 2) & ":00:00"), "Kopieren"
  Application.CutCopyMode = False
End Sub

VBA=>HTML, (c) 2018 by KHV

Wartet Excel nicht, bis der Refresh abgeschlossen ist?
VG KH
AW: ansonsten über copy und pastespecial..
15.12.2018 20:38:03
Christian
Hallo Karl-Heinz, immer noch viele Probleme,
das hier konnte ich erst gar nicht testen, da die Zeile Public Declare usw. schon rot ist (liegt wohl daran dass ich ein 64-Bit Windows und Excel hab).
Aber auch mit meinem Versuch, die Verbindungen durch das Makro aktualisieren zu lassen, ist folgender Fehler nicht behoben worden:
Userbild
Er tritt weiterhin auf, wenn das Makro zur vollen Stunde erneut ausgeführt werden soll, das allererste Ausführen klappt.
Gruß
Christian
AW: ansonsten über copy und pastespecial..
15.12.2018 22:43:10
Karl-Heinz
OK, 64 Bit ist schnell umgeschwenkt, deswegen hatte ich Dir das ja dazugeschrieben:
Public Declare PtrSafe Function Sleep Lib "kernel32" (ByVal dwmilliseconds As Long) As Long
Das andere werde ich mal selbst testen....
VG KH
AW: ansonsten über copy und pastespecial..
15.12.2018 23:20:27
Karl-Heinz
Hallo Christian,
bei mir läuft diese Version einwandfrei durch, allerdings ohne die Verknüpfungsaktualisierungen, die ich ja nicht habe.
Public Declare PtrSafe Function Sleep Lib "kernel32" (ByVal dwmilliseconds As Long) As Long
Sub Starten()
  Application.OnTime TimeValue("00:00:00"), "Kopieren"
  Application.StatusBar = "Nächste Auswertung: 00:00 Uhr"
End Sub
Sub Kopieren()
  Dim Zeile As Long, Felder() As String, T As String
  ThisWorkbook.RefreshAll
  Sleep 60000 '1 Minuten warten
'Hier die Quelladressen eintragen
  Felder = Split("B4,B5,S1,B18,B19,B16,A22", ",")
  For Zeile = 2 To 8
  ThisWorkbook.Sheets("Tabelle1").Range(Felder(Zeile - 2)).Copy
  ThisWorkbook.Sheets("Tabelle4").Cells(Zeile, Hour(Now) + 2).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
  Next Zeile
  If Hour(Now) >= 23 Then Exit Sub
  T = Right$("00" & Hour(Now) + 1, 2) & ":00:00"
  Application.StatusBar = "Nächste Auswertung: " & T & " Uhr"
  Application.OnTime TimeValue(T), "Kopieren"
  Application.CutCopyMode = False
End Sub

VBA=>HTML, (c) 2018 by KHV
Mehr kann ich nicht dazu beitragen.
VG KH
hmmmm....
19.12.2018 18:08:04
Werner
Hallo Karl-Heinz,
...jetzt scheint wohl auch noch ein "Problem" mit der Tastatur dazu gekommen zu sein.
Gruß Werner
AW: hmmmm....
20.12.2018 07:31:26
Christian
Hallo Werner, nein meine Tastatur funktioniert naürlich noch.
Ich habe ein anderes Problem, wie gesagt in den Datenverbindungen stecken die Koordinaten meiner Adresse.
Ändere ich diese, laden die Datenverbindungen völlig andere Inhalte runter, die SVERWEIS Formeln, die auf diese Daten zugreifen finden kein Ergebnis, weil der Begriff den sie suchen sollen nicht gefunden wird und damit kann auch das nicht berechnet werden, was das Makro ausgeben soll.
Ich weiß nicht, was ich hier tun kann.
Gruß
Christian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige