- Beiträge
- 5.856
- Reaktionspunkte
- 1.051
-> Hier kostenlos registrieren
Hier mal die wichtigsten Dateifunktionen
----- grundsätzliches ------------------------------------------------------------------------------------------
alle variablen in den scripten die nicht durch die DIM anweisung dimensioniert sind, sind in protool/winccflex definierte variablen (können interne oder aber auch an die steuerung gebunden sein (je nach zweck))
----- allgemein ------------------------------------------------------------------------------------------
fehlerbehandlung
eine liste der fehler findet ihr hier http://lischis-home.dyndns.org/forum/phpbb3/viewtopic.php?f=29&t=212
dateimodus
1 = lesen
2 = schreiben
8 = anhängen
----- wince ------------------------------------------------------------------------------------------
verzeichnis abfragen/erstellen
daten schreiben
daten lesen
daten kopieren
wertet bits aus einem byte aus und schreibt eine datei
----- windows ------------------------------------------------------------------------------------------
verzeichnis erstellen
daten kopieren
daten schreiben
daten lesen
Exceldatei lesen / schreiben (Danke auch an Larry Laffer)
Achtung!
Wenn die Exceldatei nicht geschlossen wird, bleibt diese geöffnet und ist nur noch schreibgeschützt erreichbar.
letze zeile in einer exceldatei ermitteln.
folgender code funktioniert aus vbscript heraus scheinbar nicht.
mit einem trick, kann man die zeilenanzahl aber ermitteln.
1. öffne die exceldatei und dann den code dazu.
2. gehe im code auf 'DieseArbeitsmappe'
3. wähle oben im reiter objekt 'workbook' und im reiter prozedur 'open'
4. füge folgenden code ein
die letzte belgete zeile steht nun in tabelle1 in feld e1 zur verfügung
in eine access datenbank schreiben
in eine mysql datenbank schreiben
der odbc-treiber muss natürlich installiert sein http://dev.mysql.com/downloads/connector/odbc/5.1.html
den namen des treibers findet man nach der installation unter: systemsteuerung/verwaltung/datenquellen (odbc) im reiter verbindungs-pooling
die vb-script dokumentation für windows wird mit protool mitinstalliert. ansonsten gibt es die bei microsoft
Online Language Reference for Windows
die vb-script doku für ce hier im anhang oder auch irgendwo bei microsoft.
Online Language Reference for Windows CE
hab heute [29.07.2008] einen recht interessanten link bei microsoft entdeckt
http://www.microsoft.com/germany/technet/datenbank/articles/600356.mspx
----- grundsätzliches ------------------------------------------------------------------------------------------
alle variablen in den scripten die nicht durch die DIM anweisung dimensioniert sind, sind in protool/winccflex definierte variablen (können interne oder aber auch an die steuerung gebunden sein (je nach zweck))
----- allgemein ------------------------------------------------------------------------------------------
fehlerbehandlung
eine liste der fehler findet ihr hier http://lischis-home.dyndns.org/forum/phpbb3/viewtopic.php?f=29&t=212
Code:
' Fehlerbehandlung aktivieren
On Error resume next
wert = "test"
wert = wert + 1
fehler = err.number
if fehler > 0 then
msgbox "Abruch durch Fehler " & fehler
err.clear 'fehler rücksetzen
end if
' Fehlerbehandlung deaktivieren. danach bricht das script wieder bei einem fehler ab
On Error goto 0
wert = wert + 1
1 = lesen
2 = schreiben
8 = anhängen
----- wince ------------------------------------------------------------------------------------------
verzeichnis abfragen/erstellen
Code:
Dim fs
Set fs = CreateObject("filectl.filesystem")
'If fs.dir("storage card2\daten") = "" Then fs.mkdir("storage card2\daten")
Code:
Dim f,fs,datei,datum,laenge
Set f= CreateObject("filectl.file")
Set fs = CreateObject("filectl.filesystem")
datei="storage card2\Log_Prozess.csv"
datum="20"&Right(Date,2)&"."&Mid(Date,4,2)&"."&Left(Date,2)
If fs.dir("\"&datei) = "" Then
f.open datei, 2
f.LinePrint "Logbuch der Pumpe"
f.LinePrint "Datum (JJJJ.MM.TT);"&"Uhrzeit;"&"Schaltspiele;"&"Betriebsstunden [h]
f.Close
End If
f.open datei, 8
f.LinePrint Datum&";"&Time&";"&Schaltspiele_täglich&";"& Betriebsstunden
f.Close
Code:
Dim f,mode
Set f= CreateObject("filectl.file")
mode = 1
f.open "storage card2\daten\datensatz.txt", mode
dat_artikel_info_1 = f.LineInputString
dat_artikel_info_2 = f.LineInputString
f.Close
Code:
On Error Resume Next
Dim f,fs,t_net_path,t_root_path
t_net_path = "\\netzwerkfreigabe\verzeichnis
t_root_path = "\storage card2\daten
Set f= CreateObject("filectl.file")
Set fs = CreateObject("filectl.filesystem")
If fs.dir (t_net_path) <> "" Then
fs.kill t_net_path&"\dat4excel.txt"
fs.filecopy t_root_path & "\dat4excel.txt", t_net_path&"\dat4excel.txt"
end if
Code:
On Error Resume Next
Dim meldung(512),x,i,j,z,f,fs,datei
x=0: z=0
zs_root_path="storage card mmc"
Set fs = CreateObject("filectl.filesystem")
Set f= CreateObject("filectl.file")
'störtexte einlesen
datei = "storage card mmc\stmtext.txt" 'jede zeile enthählt den text einer störung
f.open datei,1
Do
If f.eof = True Then Exit Do
meldung(x) = f.LineInputString
x = x + 1
Loop
f.close
'bits auswerten und stm-datei schreiben
datei = zs_root_path &"\stm_akt.txt"
fs.kill datei
f.open datei, 2
f.LinePrint Date &" "& Time &" Anstehende Störungen"
f.LinePrint "STM;Meldetext"
'DB_stm_script_hmi_stm_anzahl ist ein array of byte
For i = 0 To Int(DB_stm_script_hmi_stm_anzahl / 8)-1
For j = 0 To 7 'bits bearbeiten
If DB_stm_script_hmi_stoerung_aktiv_byte(i) And 2^j Then
z=z+1
f.LinePrint i*8+j+1 &";"& meldung(i*8+j)
End If
Next
Next
f.LinePrint ""
f.LinePrint "Gesamt: " & z
f.close
verzeichnis erstellen
Code:
If Not fso.FolderExists("d:\sicher") Then fso.CreateFolder("d:\sicher")
Code:
fso.CopyFile "D:\PROJEKT\DATEN\meinedatei.csv", "d:\sicher\"
Code:
Dim fso,datum,zeit,datei,textfile1
Set fso = CreateObject("Scripting.FileSystemObject")
datei="D:\PROJEKT\DATEN\Schmiermittel.csv"
If Not fso.FileExists (datei) Then
Set TextFile1 = fso.CreateTextFile(datei, true)
textfile1.WriteLine "Datum;"&"Uhrzeit;"&"Schmiermittel;"&"Verbrauch"
textfile1.WriteLine
textfile1.Close
End If
If fso.FileExists (datei) Then
Set TextFile1 = fso.OpenTextFile(datei, 8)
textfile1.WriteLine Datum&";"&Time&";"&Schmiermittel&";"&Verbrauch
textfile1.Close
End If
Code:
Set fso = CreateObject("Scripting.FileSystemObject")
Set TextFile = fso.openTextFile(datei, 1)
x = 0
do while textfile.atendofstream <> true
x = x + 1
name(x) = TextFile.readline
loop
textfile.close
Achtung!
Wenn die Exceldatei nicht geschlossen wird, bleibt diese geöffnet und ist nur noch schreibgeschützt erreichbar.
Code:
On Error resume next
Dim appExcel , fs , wbExcel , wsExcel
Dim Verzeichnis , Datei
Dim Zeile
'------------------------------------------------------------------------------
' Variablen-Zuweisungen ...
Verzeichnis = "c:\daten\"
Datei = "test.xls"
'------------------------------------------------------------------------------
' Pointer auf Tabelle laden
Set appExcel = CreateObject ("EXCEL.Application")
Set fs = CreateObject ("Scripting.FileSystemObject")
'------------------------------------------------------------------------------
' Objekte erzeugen
' prüfe ob datei existiert. wenn nicht erzeugen.
if not fs.fileexists (Verzeichnis + Datei) then
appExcel.Workbooks.Add
appExcel.ActiveWorkbook.SaveAs(Verzeichnis + Datei)
end if
Set wbExcel = appExcel.Workbooks.Open (Verzeichnis + Datei)
Set wsExcel = wbExcel.Worksheets("Tabelle1")
' Zelle lesen und um 1 erhöhen
Zeile = wsExcel.Range("D1") + 1
' Zelle beschreiben
wsExcel.Cells (Zeile , 1) = date
wsExcel.Cells (Zeile , 2) = time
wsExcel.Range("D1") = Zeile
' Tabelle abspeichern
wbExcel.Close true 'false
appExcel.Quit ()
'------------------------------------------------------------------------------
' verwendeten Speicher wieder freigeben
Set wsExcel = Nothing
Set wbExcel = Nothing
Set fs = Nothing
Set appExcel = Nothing
Set Verzeichnis = Nothing
Set Datei = Nothing
die datei (EXCEL-Script.doc) ist im anhangLarry Laffer schrieb:Hallo Volker,
zu dem genannten FAQ hätte ich noch ein schönes Addon.
Wenn man ständig auf Excel zugreifen möchte, um Daten dahin zu schreiben, dann kann man es auch als Instanz geöffnet lassen (mit dem richtigen Workbook) und dann ständig auf die geöffnete Instanz zugreifen. Das spart Systemresourcen ...
letze zeile in einer exceldatei ermitteln.
folgender code funktioniert aus vbscript heraus scheinbar nicht.
Code:
wsExcel.zeilenanzahl = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row
1. öffne die exceldatei und dann den code dazu.
2. gehe im code auf 'DieseArbeitsmappe'
3. wähle oben im reiter objekt 'workbook' und im reiter prozedur 'open'
4. füge folgenden code ein
Code:
Private Sub Workbook_Open()
Sheets("Tabelle1").Select
zeilenanzahl = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row
Worksheets("Tabelle1").Range("e1") = zeilenanzahl
End Sub
in eine access datenbank schreiben
Code:
Verzeichnis = "c:\daten\"
Datei = "test.mdb"
' ------------------------------------------------------------------------------
Dim sUser
Dim sIP
Dim Con
Dim sCon
Dim sSql
sUser = "Max Mustermann"
sIP = "127.0.0.1"
Set Con = CreateObject("ADODB.Connection")
'DB Provider für Jet
sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & verzeichnis & datei & ";Mode=Share Deny None;Persist Security Info=False"
'DB Provider für ODBC
'sCon = Provider=MSDASQL.1;Persist Security Info=False;Data Source=my ODBC
Con.Open sCon
sSql = "INSERT INTO LogonLog ( [User], [Date], [Time], IP ) "
sSql = sSql & "SELECT '" & sUser & "' AS [User], Date() AS [Date], Time() AS [Time], '" & sIP & "' AS IP;"
Con.Execute sSql
Con.Close
Set Con = Nothing
der odbc-treiber muss natürlich installiert sein http://dev.mysql.com/downloads/connector/odbc/5.1.html
den namen des treibers findet man nach der installation unter: systemsteuerung/verwaltung/datenquellen (odbc) im reiter verbindungs-pooling
Code:
db_server= "192.168.1.1"
db_port= "3306"
db_user= "root"
db_pass= "MeinPasswort"
db_name= "test"
db_tabelle= "tabelle"
' sql-Anweisung
Sql = "INSERT INTO " & db_tabelle & " ( datum, zeit ) values ('" & date & "' , '" & time & "' );"
' Verbindung zu MySql Server initialisieren
Set conn=CreateObject("ADODB.Connection")
strConnectString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=" & db_server & ";" _
& " DATABASE=" & db_name & ";" _
& "UID=" & db_user & ";PWD=" & db_pass & "; OPTION=3"
conn.Open strConnectString
'ausführen
Set rs=CreateObject("ADODB.recordset")
rs.Open Sql, conn
conn.Close
Online Language Reference for Windows
die vb-script doku für ce hier im anhang oder auch irgendwo bei microsoft.
Online Language Reference for Windows CE
hab heute [29.07.2008] einen recht interessanten link bei microsoft entdeckt
http://www.microsoft.com/germany/technet/datenbank/articles/600356.mspx
Anhänge
Zuletzt bearbeitet: