Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
976to980
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
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Messwerte einer Anlage in Excel registrieren

Messwerte einer Anlage in Excel registrieren
20.05.2008 11:24:44
christian
Hallo,
für die Datenregistrierung einer technischen Anlage besteht bereits folgender String:

Private Sub Timer2_Timer()
ChDir “c:/****/****“
pdate = Right(Date,4) & Mid(Date, 2 & Left(Date, 2)
Open pdate + „daten****.txt“ For Append As 1
Print #1, Date & “,“;
Print #1, Time & “,“;
…                             
Close #1
End Sub


Die Daten sollen zukünftig aber statt in .txt in einer .xls- Datei registriert werden.
Was müsste geändert werden?
Danke
christian

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Messwerte einer Anlage in Excel registrieren
20.05.2008 12:03:03
Daniel
Hi
im Prinzip so:

Sub Test()
Workbooks.Open "C:\DeinPfad\DeineDatei.xls"
with activeworkbook.sheets(1).Cells(rows.count,1)
.end(xlup).offset(1,0).value = Date
.end(xlup).offset(1,0).value = Time
' ... hier dann die weiteren Daten nach gleichem Schema
end with
activeworkbook.save
activeworkbook.close
End Sub


mit diesem Makro wird eine bestehende Exceldatei geöffnet und die neuen Daten werden im ersten Tabellenblatt in der Spalte A fortlaufend nach unten weitergeschrieben, die bestehenden Daten bleiben erhalten.
Gruß, Daniel

Anzeige
AW: Messwerte einer Anlage in Excel registrieren
20.05.2008 12:09:00
Daniel
HI
ich hab grade gesehen, du brauchst die Daten nebeneinander, dann siehts so aus:

Sub Test()
dim Zeile as long
Workbooks.Open "C:\DeinPfad\DeineDatei.xls"
Zeile = activeworkbook.sheets(1).cells(rows.count, 1).end(xlup).row + 1
with activeworkbook.sheets(1)
.cells(zeile,1).value = Date
.cells(zeile,2).value = Time
' ... hier dann die weiteren Daten nach gleichem Schema
end with
activeworkbook.save
activeworkbook.close
End Sub


gruß, Daniel

AW: Messwerte einer Anlage in Excel registrieren
21.05.2008 09:52:25
christian
Hallo,

HI
ich hab grade gesehen, du brauchst die Daten nebeneinander, dann siehts so aus:


das wäre super. wird dabei für den jeweiligen Tag eine excel datei erzeugt? (so wie im bisherigen Code eine .txt erzeugt wird)
Wenn ja, kann man dafür auch ein muster-blatt verwenden, in dem bspw. die erste zeile vorgefertigt ist und dann ab der zweiten die eintragungen erfolgen? (ich würde hierzu ein musterblatt entwerfen, auf dessen basis dann immer eine neue datei erzeugt wird)
danke im voraus
christian

Anzeige
AW: Messwerte einer Anlage in Excel registrieren
21.05.2008 11:41:00
Daniel
Hi
wenn du ein neues Workbook erstellen willst, dann müsste der Code dazu so aussehen.
als Vorlage verwende ich das Blatt "Tabelle2" aus der Datei, in der der Code steht.
dieses Blatt wird mit allem drum und dran (Formate, Seiteneinstellungen, ggf. vorhandener Macrocode) in die neue Datei kopiert.

Sub Test()
dim Zeile as long
dim Dateiname as string
Sheets("Tabelle2").Copy
with activeworkbook.sheets(1)
Zeile = .cells(rows.count, 1).end(xlup).row + 1
.cells(zeile,1).value = Date
.cells(zeile,2).value = Time
' ... hier dann die weiteren Daten nach gleichem Schema
end with
' --- Hier Code einfügen, in der der Dateiname zusammengestellt wird
activeworkbook.saveas Dateiname
activeworkbook.close
End Sub


Gruß, Daniel

Anzeige
AW: Messwerte einer Anlage in Excel registrieren
21.05.2008 12:50:12
christian
danke für den code.
noch eine frage:
Ich möchte in die erste (und evtl. auch noch die zweite etwas ins musterblatt schreiben.
Erfolgt die Eintragung der Daten dann automatisch in der ersten freien Zeile (also 2ter bzw. 3ter Zeile)?
danke.
christian

AW: Messwerte einer Anlage in Excel registrieren
21.05.2008 13:18:00
Daniel
Hi
der Code ermittelt die letzte beschriebene Zelle in Spalte A und beschreibt dann die Zeile dadrunter.
dh. wenn Zelle A10 die letzte beschriebene ist, dann werden die Daten in Zeile 11 eingefügt.
die anderen Spalten werden nicht berücksichtigt und im Zweifelsfall überschrieben.
falls ne andere Spalte geprüft werden muss, kannst du das ja im Code an der markieren Stelle anpassen:
Zeile = .cells(rows.count, 1).end(xlup).row + 1
Gruß, Daniel

Anzeige
AW: Messwerte einer Anlage in Excel registrieren
21.05.2008 13:46:44
christian
SUPER !!!
Ich kanns leider erst nächste Woche probieren und benutzen, aber vielen dank für die Hilfe.
christian

AW: Messwerte einer Anlage in Excel registrieren
20.05.2008 12:03:36
MAS
das dürfte rel. viel Aufwand werden.
Wäre einfacher, du würdest nur ein Makro schreiben zum Datenimport
Daten --> Externe Daten importieren --> Daten importieren
Hier eine Aufzeichnung

Sub Makro1()
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\TEST.txt", Destination _
:=Range("A1"))
.Name = "TEST"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = True
.TextFileColumnDataTypes = Array(1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub


Anzeige
AW: Messwerte einer Anlage in Excel registrieren
20.05.2008 12:21:32
fcs
Hallo Christian,
so wie ich das verstehe, wird für jeden Tag eine neue Datei angelegt.
In welchem Zeitabstand erfolgt denn das Einlesen der Daten?
Wenn dieser sehr kurz ist (wenige Sekunden) dann sollte die Exceldatei ständig geöffnet sein.
Gibt es schon eine Mustertabelle, wie die Exceltabelle aussehen soll. Am einfachsten ist es diese Tabelle in der gleichen Datei anzulegen, in der das Timer-Makro gespeichert ist. Dann kann man sie bei Bedarf vom Makro kopieren lassen.
Der zu programmierende Ablauf wäre:
1. Prüfen, ob die Excel-Datei schon existiert.
Wenn nein, dann neue Mappe anlegen als Kopie des Musterblatts
Wenn ja, dann prüfen, ob schon geöffnet, falls nein öffnen.
2. nächste freie Zeile im Tabellenblatt suchen
3. Daten in die Spalten schreiben
4. Datei speichern
5. Datei ggf. wieder schliessen
Was das Eintragen und Speichern der Daten angeht, kann man es ggf. auch eleganter lösen, indem man Excel als Datenbank-Objekt anspricht. Das überfordert allerdings meine VBA-Kenntnisse.
Falls die Zahlen im Textstring nicht in einem excelkompatiblen Format (problem Ländereinstellungen) übergeben werden, dann müssten ggf. auch noch entsprechende Umwandlungsroutinen eingebaut werden.
Bevor ich hier weitermache, wüßte ich schon gerne, ob dieser Ablauf den Vorstellungen entspricht.
Zum Testen sollte zumindest eine Datenzeile mit einem kompletten Datensatz aus dem erzeugten Text-File zur Verfügung stehen.
Außerdem wäre zu überlegen, ob man nicht schlicht und einfach das Textfile in eine Exceltabellenblatt importiert. Dann bräuchte man an den bestehenden Routinen nichts zu ändern.
Einmal am Tag wird dann die Txt-Datei des Vortags in ein Tabellenblatt importiert und anschließend gelöscht oder archiviert.
Gruß
Franz

Anzeige
AW: Messwerte einer Anlage in Excel registrieren
21.05.2008 09:43:00
christian
hallo,

so wie ich das verstehe, wird für jeden Tag eine neue Datei angelegt.


haargenau. es soll immer eine datei für jeden tag erzeugt und beschrieben werden. Der Name soll in Analogie zum .txt erzeugt werden.


In welchem Zeitabstand erfolgt denn das Einlesen der Daten? 


etwa alle 10 sekunden.


Gibt es schon eine Mustertabelle, wie die Exceltabelle aussehen soll. Am einfachsten ist es  _
diese Tabelle in der gleichen Datei anzulegen, in der das Timer-Makro gespeichert ist. Dann kann man sie bei Bedarf vom Makro kopieren lassen.
Der zu programmierende Ablauf wäre:
1. Prüfen, ob die Excel-Datei schon existiert.
Wenn nein, dann neue Mappe anlegen als Kopie des Musterblatts
Wenn ja, dann prüfen, ob schon geöffnet, falls nein öffnen.
2. nächste freie Zeile im Tabellenblatt suchen
3. Daten in die Spalten schreiben
4. Datei speichern
5. Datei ggf. wieder schliessen


Das trifft quasi genau meine vorstellungen!
Ich möchte gern in der ersten zeile die werte in der jeweiligen spalte definieren (z.B. Datum, Uhrzeit,...)
Aufgrund meiner äußerst bescheidenen kenntnisse würde ich mir an der generierung eines solchen codes die zähne ausbeißen, vielleicht kannst du mir da weiterhelfen?


Außerdem wäre zu überlegen, ob man nicht schlicht und einfach das Textfile in eine  _
Exceltabellenblatt importiert. Dann bräuchte man an den bestehenden Routinen nichts zu ändern.
Einmal am Tag wird dann die Txt-Datei des Vortags in ein Tabellenblatt importiert und anschließend gelöscht oder archiviert.


Diese Routine soll auf jeden Fall geändert werden.
Für die bereits bestehenden .txt-files habe ich exzellente hilfe von Rudi bekommen.
Danke im Voraus.
christian
PS: bei der version ist ein fehler, ich arbeite mit version 11.

Anzeige
AW: Messwerte einer Anlage in Excel registrieren
21.05.2008 14:52:00
fcs
Hallo Christian,
in der hochgeladenen Datei hab ich dir das Grundgerüst eingebaut.
Das Muster-Tabellenblatt muss du in deine Original-Datei mit den Timer-Prozeduren kopieren oder dir ein entsprechendes Blatt dort anlegen.
Die Prozeduren im Modul Modul_DatenEinlesen muss du dann entsprechend anpassen und in deinen Code einbauen.
https://www.herber.de/bbs/user/52517.xls
Gruß
Franz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige