Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Aufbau Excel-Datenbank

Forumthread: Aufbau Excel-Datenbank

Aufbau Excel-Datenbank
07.03.2025 11:27:25
dirknico
Hallo,

ich möchte aus Maschinen (6 insgesamt) diverse Betriebszustände auslesen, speichern und bei Bedarf über Filterfunktionen grafisch / tabellarisch anzeigen.
Das auslesen und speichern funktioniert soweit, mir geht es um den generellen Aufbau.

Ich habe mir hierzu eine "Parameter-Datei" angelegt in der die Makros zum auslesen, speichern usw. aufgerufen werden.

Es wird je Maschine eine Datei erstellt, in der die Daten über ein Jahr gespeichert werden, neues Jahr -> neue Datei.

Das auslesen und speichern läuft derzeit in einer Endlos-Schleife, hierbei werden die 6 Dateien für die Maschinen geöffnet und beschrieben.


Sub Endlosschleife()
Do
If GetAsyncKeyState(&H1B) = -32767 Then 'ESC-Taste
If MsgBox("Wollen sie wirklich abbrechen?" & Space(10), vbYesNo + vbQuestion, "Abbruch") = vbYes Then
Exit Sub
End If
End If

#If Win64 Then
Dim ph As LongPtr, di As LongPtr, dc As LongPtr
#Else
Dim ph As Long, di As Long, dc As Long
#End If

Dim i, Anlagen, Quelle, Ziel, Tabelle, IP, res, res2, DB, Start, Anzahl, Zeile, Spalte

Anlagen = Worksheets("System").Range("B1") 'IP-Adresse aus Arbeitsblatt

For i = 1 To Anlagen

Quelle = "B" & i + 2
IP = Worksheets("System").Range(Quelle) 'IP-Adresse aus Arbeitsblatt

res = verbinden(ph, di, dc, IP)

If res = 0 Then
' Quelle bereitstellen
DB = Worksheets("System").Range("C2")
Start = Worksheets("System").Range("D2")
Anzahl = Worksheets("System").Range("E2")

res2 = daveReadBytes(dc, daveDB, DB, Start, Anzahl, 0)

If res2 = 0 Then
Select Case i

Case 1
Set Ziel = Workbooks.Open(ThisWorkbook.Path & "\Daten\" & Format(Now, "yyyy") & "_800to_HIW.xlsx")
Ziel.Activate
Case 2
Set Ziel = Workbooks.Open(ThisWorkbook.Path & "\Daten\" & Format(Now, "yyyy") & "_800to_Schuler.xlsx")
Ziel.Activate
Case 3
Set Ziel = Workbooks.Open(ThisWorkbook.Path & "\Daten\" & Format(Now, "yyyy") & "_630to_Schuler.xlsx")
Ziel.Activate
Case 4
Set Ziel = Workbooks.Open(ThisWorkbook.Path & "\Daten\" & Format(Now, "yyyy") & "_400to_Schuler.xlsx")
Ziel.Activate
Case 5
Set Ziel = Workbooks.Open(ThisWorkbook.Path & "\Daten\" & Format(Now, "yyyy") & "_315to_HIW.xlsx")
Ziel.Activate
Case 6
Set Ziel = Workbooks.Open(ThisWorkbook.Path & "\Daten\" & Format(Now, "yyyy") & "_160to_HIW.xlsx")
Ziel.Activate
End Select

Set Tabelle = Ziel.Worksheets(Format(Now, "MMMM"))

Tabelle.Activate

'Zeile
Zeile = Format(Timer(), "0")
'Spalte
Spalte = Format(Now, "dd")

Tabelle.Cells(Zeile * 1, Spalte * 1) = daveGetS16(dc) 'Status
Tabelle.Cells(Zeile * 1, Spalte * 2) = daveGetS16(dc) 'Betriebsart
Tabelle.Cells(Zeile * 1, Spalte * 3) = daveGetS16(dc) 'Hubzahl
Tabelle.Cells(Zeile * 1, Spalte * 4) = daveGetS16(dc) 'Stückzahl
ActiveWorkbook.Save
Windows("BDE_System.xlsm").Activate
End If

End If

Call cleanUp(ph, di, dc)
Next i
Loop
End Sub


Blöd ist jetzt das durch das hin und herspringen zwischen den Dateien der Bildschirm die ganze flackert, zudem wäre es gut wenn das ganze "parallel" im Hintergrund laufen könnte, da ich ja auch irgendwo noch die Sachen für die Auswertung / Anzeige händeln muss.

Macht der generelle Aufbau so Sinn, oder sollte das generell anders aufgebaut werden?
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aufbau Excel-Datenbank
07.03.2025 11:44:23
Onur
Ist es denn zwingend erforderlich, dass jede Maschine eine eigene Datei hat?
Eine Einzige Datei mit je einem Blatt pro Maschine oder gar nur ein Blatt für Alle wäre doch besser und würde den Rechner nicht so stressen.
Und wenn schon 6 Dateien - man muss die nicht dauernd öffnen und schliessen und speichern.
Und eine Endlosschleife ist eigentlich nicht umsonst verpönt bei Programmierern und gilt als Armutszeugnis - eine Timerlösung ist viel eleganter und stressfreier.
Anzeige
AW: Aufbau Excel-Datenbank
07.03.2025 12:06:24
Der Steuerfuzzi
Hallo,

erstmal kannst Du die ganzen .Activate weglassen. Im Prinzip sind schon alle Zellzugriffe über "Tabelle" korrekt referenziert. Lediglich das speichern der Datei musst Du von ActiveWorkbook.Save in Ziel.Save ändern.

Dann stellt sich die Frage, ob Du tatsächlich dauernd und ohne Unterbrechung auslesen musst. Es sind ständig 6 Dateien geöffnet und werden gespeichert.

Ob es nicht, wie Onur schon schrieb, doch eher Sinn macht, in gewissen Zeitabständen und alles in eine Datei zu schreiben. Entweder ein Tabellenblatt pro Maschine oder sogar alle Maschinen auf ein Tabellenblatt und dieses dann auswerten/filtern.

Gruß
Michael
Anzeige
AW: Aufbau Excel-Datenbank
07.03.2025 12:01:17
dirknico
Ist es denn zwingend erforderlich, dass jede Maschine eine eigene Datei hat?
Nein, ist nicht zwingend erforderlich,
ich habe eigentlich geplant die Daten via Endlosschleife abzuholen, via Timerlösung wäre auch möglich.

Und wenn schon 6 Dateien - man muss die nicht dauernd öffnen und schliessen und speichern.
Ich öffne Sie ja nur einmal und lasse diese dann offen, das flackern kommt ja vermutlich durch das
Windows("BDE_System.xlsm").Activate

aktivieren der System-Datei.......
Anzeige
AW: Aufbau Excel-Datenbank
07.03.2025 12:04:18
Onur
Du musst nix aktivieren, um da was reinschreiben zu können, du musst nur richtig referenzieren.
AW: Aufbau Excel-Datenbank
07.03.2025 12:06:42
dirknico
Du musst nix aktivieren, um da was reinschreiben zu können, du musst nur richtig referenzieren.
???
Das verstehe ich nicht, was heißt richtig referenzieren?
AW: Aufbau Excel-Datenbank
07.03.2025 12:09:24
Onur
Wenn du schreibst
Worbooks("XY").Sheets("IrgendWas").Range("A1")="Hallo"
wird nix aktiviert und trotzdem korrekt ausgeführt - oder ?
Anzeige
AW: Aufbau Excel-Datenbank
07.03.2025 12:17:20
Onur
Mit "referenzieren" ist folgendes gemeint:
Wenn wir in beide in Köln wohnten und ich dir meine Telefonnummer gäbe, bräuchte ich ja nicht die Länderkennung und die Vorwahl zu geben, da beides sozusagen "aktiviert" wäre.
Wenn du aber einem Franzosen, den du gerade kennengelernt hast, deine Nummer gibst, müsstest du korrekt "referenzieren" - also die Nummer MIT Länderkennung und Vorwahl geben - dann kann auch nix falsch laufen.
Anzeige
AW: Aufbau Excel-Datenbank
07.03.2025 12:32:12
dirknico
Ja, passt.....

Ich werde mich am Montag mal an ein paar Änderungen machen, und mich wieder melden.

Danke!

Forumthreads zu verwandten Themen

Anzeige
Anzeige