WinCC Flex CSV Datei schreiben Wincc Flexible 2008 mit veränderlichem Dateinamen

olmuk

Level-2
Beiträge
61
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

ich möchte eine CSV-Datei aus einer Runtime schreiben. Der Dateiname soll variabel sein ( String ).
Wie bekomme ich eine indizierte Adressierung des filenamen hin?

Müsste ich nicht hier :

path = "c:\test\textfile.txt"

textfile mit einem String ersetzen um dann das file zu erzeugen ?

'if no file exist a text file will be created - Datei erstellen, wenn keine vorhanden
If Not fso.FileExists(path) Then
fso.CreateTextFile(path)

Vielen Dank
Gruss olmuk
 
Zuletzt bearbeitet von einem Moderator:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
vielen Dank für die schnelle Antwort und die Infos.

Ich scheitere am Syntax den Dateinamen durch einen String zu ersetzen:
Betrifft den Teil "&CStr(file)"

Vielleicht wird es mit dem ganzen Script klarer :
'Deklaration von lokalen Variablen
Dim fso, f, ts, path, file

file = "Meinfile"

'Definition der Datei-Extension
If SmartTags("bExtension") = 0 Then
path = "c:\test\textfile.txt"
Else
path = "c:\test\ & CStr(file).csv"
End If

'Create object - Objekt erstellen
Set fso = CreateObject("Scripting.FileSystemObject")

'Abfrage Ordner vorhanden, wenn nicht dann erzeugen
If Not fso.FolderExists("c:\test") Then
fso.CreateFolder("c:\test")
End If

'Abfrage Datei vorhanden, wenn nicht dann erzeugen
If Not fso.FileExists(path) Then
fso.CreateTextFile(path)
End If

Set f = fso.GetFile(path)

Set ts = f.OpenAsTextStream(2, -2)

'Write values into the file - Werte in die Datei schreiben
ts.WriteLine("Schritt 1; " & SmartTags("Sollwert Out Schritt_1") & ";" & SmartTags("Zeit Schritt_1") & ";")
ts.WriteLine("Schritt 2; " & SmartTags("Sollwert Out Schritt_2") & ";" & SmartTags("Zeit Schritt_2") & ";")
ts.WriteLine("Schritt 3; " & SmartTags("Sollwert Out Schritt_3") & ";" & SmartTags("Zeit Schritt_3") & ";")
ts.WriteLine("Schritt 4; " & SmartTags("Sollwert Out Schritt_4") & ";" & SmartTags("Zeit Schritt_4") & ";")
ts.WriteLine("Schritt 5; " & SmartTags("Sollwert Out Schritt_5") & ";" & SmartTags("Zeit Schritt_5") & ";")

'Close file - Datei schließen
ts.Close

Set ts = Nothing
Set f = Nothing
Set fso = Nothing
 
Was meinst Du mit "indiziert"? Soll da noch eine veränderliche Zahl im Dateiname verwendet werden?

Ansonsten: Dateiname zusammensetzen = String zusammensetzen, z.B. Strings verketten
Code:
myfile = "Meinfile"
path = "C:\test\"

file = path & myfile & ".csv"  '--> file = "C:\test\Meinfile.csv"

Harald
 
file = "Meinfile"

'Definition der Datei-Extension
If SmartTags("bExtension") = 0 Then
path = "c:\test\textfile.txt"
Else
path = "c:\test\ & CStr(file).csv"
End If
Was sollen denn die Anführungszeichen an der Stelle?
Wenn dann...
Code:
path = "c:\test\" & CStr(file) & ".csv"
Wobei das CStr (Convert_to_String) ja nutzlos ist da die Variable "file" mit "Meinfile" eh schon einen String enthält.

Wie man sieht weißt du ja wie man Zeichenketten zusammenbaut. Also wo liegt das Problem?
ts.WriteLine("Schritt 1; " & SmartTags("Sollwert Out Schritt_1") & ";" & SmartTags("Zeit Schritt_1") & ";")
 
Danke für die Hilfe - So nun habe ich was ich benötige :

'////////////////////////////////////////////////////////////////
' Erstellen und Speichern einer CSV-Datei mit variablem Dateinamen
' Created: 03-06-2016
' Version: v0.1
' Author: UJ
'////////////////////////////////////////////////////////////////

'Deklaration von lokalen Variablen
Dim fso, f, ts, path, file, myfile

myfile = Dateiname_Parameter
path = "C:\test"
file = path & myfile & ".csv"

'Objekt erstellen
Set fso = CreateObject("Scripting.FileSystemObject")

'Abfrage Ordner vorhanden, wenn nicht dann erzeugen
If Not fso.FolderExists("c:\test") Then
fso.CreateFolder("c:\test")
End If

'Abfrage Datei vorhanden, wenn nicht dann erzeugen
If Not fso.FileExists(file) Then
fso.CreateTextFile(file)
End If

Set f = fso.GetFile(file)

Set ts = f.OpenAsTextStream(2, -2)

'Werte in die Datei schreiben
ts.WriteLine("Schritt 1; " & SmartTags("Sollwert Out Schritt_1") & ";" & SmartTags("Zeit Schritt_1") & ";")
ts.WriteLine("Schritt 2; " & SmartTags("Sollwert Out Schritt_2") & ";" & SmartTags("Zeit Schritt_2") & ";")
ts.WriteLine("Schritt 3; " & SmartTags("Sollwert Out Schritt_3") & ";" & SmartTags("Zeit Schritt_3") & ";")
ts.WriteLine("Schritt 4; " & SmartTags("Sollwert Out Schritt_4") & ";" & SmartTags("Zeit Schritt_4") & ";")
ts.WriteLine("Schritt 5; " & SmartTags("Sollwert Out Schritt_5") & ";" & SmartTags("Zeit Schritt_5") & ";")

'Close file - Datei schließen
ts.Close

Set ts = Nothing
Set f = Nothing
Set fso = Nothing
 
'Abfrage Datei vorhanden, wenn nicht dann erzeugen
If Not fso.FileExists(file) Then
fso.CreateTextFile(file)
End If

Set f = fso.GetFile(file)

Set ts = f.OpenAsTextStream(2, -2)
Geht einfacher
Code:
'Datei öffnen, wenn nicht vorhanden dann erzeugen
Set ts = fso.OpenTextFile(file, 8, True) '8 = ForAppending, True = neue Datei erstellen wenn nicht exist

PS: für posten von Code bitte die [CODE]-Tags benutzen (der #-Button im Beitragseditor)

Harald
 
Zurück
Oben