WinCC-Variablenwerte in Excel-Sheet eintragen

MKP

Level-1
Beiträge
47
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen!

Ich möchte aus meinem WinCC-Projekt heraus zu bestimmten Zeiten Prozesswerte in eine vorgefertigte Excel-Tabelle eintragen. Vom Prinzip her soll das so ablaufen:

-Beim Start einer Schrittkette in der Steuerung soll im Hintergrund von WinCC eine vorgefertigte Excel-Tabelle geöffnet werden.
->Während der Schrittkette werden zu bestimmten Zeiten Variablenwerte in bestimmte Zellen des Excel-Sheets eingetragen.
->Nach Beenden der Schrittkette soll die Datei automatisch abgespeichert werden. Dabei soll der Wert einer WinCC-Textvariablen als Dateiname übernommen werden.

Ist dies mit WinCC möglich. Der Siemens-Support hat mich auf das OPC-DA-Beispiel in der WinCC-Hilfe verwiesen, aber da ich von VB keine Ahnung habe, komme ich damit nicht zurecht:confused: .

Vielen Dank für Eure Hilfe!
 
hi, versuche es mal damit.
leider konnte ich es nicht testen.


Dim DATA1
Dim DATA2
Dim SFC_RUN
Dim Dateiname
Dim objExcelApp

Set DATA1 = HMIRuntime.Tags("DATA1")
Set DATA2 = HMIRuntime.Tags("DATA2")
Set SFC_RUN = HMIRuntime.Tags("SFC_RUN")
Set Dateiname = HMIRuntime.Tags("Dateiname")
Set objExcelApp = CreateObject("Excel.Application")

objExcelApp.Visible = False
objExcelApp.Workbooks.Open Dateiname.Read(1)
If SFC_RUN.Read(1) = 1 Then
objExcelApp.Range("A4").Select
objExcelApp.ActiveCell.FormulaR1C1 = "Wert 1:"
objExcelApp.Range("A5").Select
objExcelApp.ActiveCell.FormulaR1C1 = "Wert 2:"
objExcelApp.Range("A6").Select
objExcelApp.ActiveCell.FormulaR1C1 = "Summe:"
objExcelApp.Range("B4").Select
objExcelApp.ActiveCell.FormulaR1C1 = DATA1.Read(1)
objExcelApp.Range("B5").Select
objExcelApp.ActiveCell.FormulaR1C1 = DATA2.Read(1)
objExcelApp.Range("B6").Select
objExcelApp.ActiveCell.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"
Else
objExcelApp.ActiveWorkbook.Save
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp = Nothing
End If
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für die schnelle Antwort!

Könntest du das Script vielleicht kommentieren? Ich habe wie gesagt von VB keine Ahnung. Habe daher Schwierigkeiten, meine Variablen in das Script einzubauen, einen Pfad zuzuordnen usw.

Muss ich das Script als globale Aktion ausführen, oder kann ich es z.B. als Aktion auf einen Button legen?
 
Hab das Script jetzt hinbekommen. Nur zwei Sachen bereiten mir noch Kopfzerbrechen::confused:

- Ich möchte die Excel Datei unter dem Namen einer Variablen in einem bestimmten Pfad speichern. Wie bringe ich die Variable in der Pfadangabe unter?

- Wie kann ich in VB Datum und Uhrzeit auslesen und ebenfalls in das Excel-Sheet übertragen?

Vielen Dank für Eure Hilfe!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
dialog script

vielleicht kannst du das auch gebrauchen.

Dim strFilename, Dialog, fso, Filename
Set Dialog = CreateObject("MSComDlg.CommonDialog")

'Explorer-Dialog zum Speichern von Dateien
'Titelzeile
Dialog.MaxFileSize = 260 ' Init buffer (NECESSARY!)
'Dialog.Flags = &H1004 ' Datei muss vorhanden sein
Dialog.Flags = &H0004 ' datei muss nicht vorhanden sein

'Filter setzen
Dialog.Filter = "All Files (*.*)|*.*|" & "Excel Files (*.xls) |*.xls*|"

Dialog.DialogTitle = "Save Current Values"

' Filter auf xls setzen
Dialog.FilterIndex = 2

'Flags setzen: Explorer-Dialog mit langen Dateinamen
Dialog.Flags = &H1814

'Dialog.ShowOpen
Dialog.ShowSave

Filename = Dialog.Filename
Filename = Filename & ".xls"

Set Dialog = Nothing
 
Ich möchte die Variante "Speichern unter" verwenden, da ich auf ein vorgefertigtes Excel-Sheet zugreife. Die Anweisung sieht folgendermaßen aus:

objExcelApp.ActiveWorkbook.SaveAs "D:\Ordner\... .xls"

An die Stelle '...' muss ich nur irgendwie meinen Dateinamen bringen.

Die Date- und die Time-Funktion habe ich mir in der VB-Hilfe angeschaut. Aber die Übertragung der Werte in Excel funktioniert nicht mit der gleichen Syntax wie bei den WinCCVariablen.
 
wenn ich das richtig vestehe, möchtest du eine vorlage bearbeiten und unter einem anderen namen speichern?

zu 1.
mein vorschlag wäre die vorlage zuerst in die neue datei zu kopieren und dann diese über das script zu füllen und speichern.

Das folgende Beispiel zeigt die Verwendung der Copy-Methode:
Dim fso, MeineDatei
Set fso = CreateObject("Scripting.FileSystemObject")
Set MeineDatei = fso.GetFile("c:\vorlage.xls")
MeineDatei.Copy "c:\ergebnisse.xls"
zu 2.
objExcelApp.ActiveWorkbook.SaveAs "D:\Ordner\"+ Dateiname.Read(1) +".xls"

zu 3.
objExcelApp.Range("B4").Select
objExcelApp.ActiveCell.FormulaR1C1 = Time
objExcelApp.Range("B5").Select
objExcelApp.ActiveCell.FormulaR1C1 = Date
 
Zurück
Oben