WinCC VBA auf Excel zugreifen

Move

Level-2
Beiträge
511
Reaktionspunkte
59
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich suche mir schon seit langer Zeit einen Wolf.
Ich suche ein Beispielscript in "C" oder VBA auf WinCC Seite um Werte aus einer Excel-Liste auf entsprechende WinCC Variable zu schreiben.
Hab auch was gefunden, laut Verfasser lauffähig, bei mir aber nicht:confused:
Was mach ich nur falsch, bin ein Laie auf diesem Gebiet.
Also die Syntaxüberprüfung sagt alles ok.
In WinCC Runtime ist Gobal Script aktiviert
Brauche ich hier noch ne Triggervariable so wie unter "C"
Wie erkenne ich, das das Script überhaupt bearbeitet wird
Oder ist in der Syntax doch noch was falsch?

Gruß Move

Hier mal das Script:

Sub procedure1
Dim excel, wbActive, wsActive
'Create an Excel-Application object
Set excel = CreateObject("Excel.Application")
Set wbActive = excel.Workbooks.Open("C:\Mappe1.xls")
Set wsActive = wbActive.Worksheets("Tabelle1")

'----------------- WinCC Variable schreiben --------------------
Dim objTag
Set objTag = HMIRuntime.Tags(Test_Ex)
objTag.Value = wsActive.cells(1,1).Value
objTag.Write
'Set objTag = HMIRuntime.Tags(\"Schritt_2\")
'objTag.Value = wsActive.cells(4,3).Value
'objTag.Write
End Sub
 
Hallo,
du brauchst auf alle Fälle ein Trigger-Ereignis - von sich aus laufen die Scripte nicht.
Zum Herumspielen könntest du es ja einfach mal auf eine Taste legen.

Außerdem solltest du in dem Script das Workbook nach Gebrauch auch noch wieder schliessen und die Applikation (Excel) wieder beenden.

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
du brauchst auf alle Fälle ein Trigger-Ereignis - von sich aus laufen die Scripte nicht.
Zum Herumspielen könntest du es ja einfach mal auf eine Taste legen.

Außerdem solltest du in dem Script das Workbook nach Gebrauch auch noch wieder schliessen und die Applikation (Excel) wieder beenden.

Gruß
Larry

Mag sein, nur wie mache ich das:confused::confused::confused:
 
Hi,

ich hab schon soviel geschaut, dies u.a. auch. Nur sehe ich vor lauter Bäume den Wald nicht mehr, zumal ich hier nichts zum laufen bringe.
Das Script was ich geposte habe sollte meiner Meinung nach laufen?
Muss ich das VBA Script jetzt wie unter bei C-Scripten triggern, wenn ja wie, ich finde da nix.

Man ist das ein schei.....Thema

Gruß
Move
 
Zuviel Werbung?
-> Hier kostenlos registrieren
von wincc hab ich leider keine ahnung.
aber so etwas wie irgendwas ausführen wenn grenzwert überschritten wird oder so sollte es bestimmt geben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sub procedure1
Dim excel, wbActive, wsActive
'Create an Excel-Application object
Set excel = CreateObject("Excel.Application")
Set wbActive = excel.Workbooks.Open("C:\Mappe1.xls")
Set wsActive = wbActive.Worksheets("Tabelle1")

'----------------- WinCC Variable schreiben --------------------
Dim objTag
Set objTag = HMIRuntime.Tags(Test_Ex)
objTag.Value = wsActive.cells(1,1).Value
objTag.Write
'Set objTag = HMIRuntime.Tags(\"Schritt_2\")
'objTag.Value = wsActive.cells(4,3).Value
'objTag.Write
End Sub

Im WinCC-Variablenname fehlen die Anführungsstriche:

Sub procedure1
Dim excel, wbActive, wsActive
'Create an Excel-Application object
Set excel = CreateObject("Excel.Application")
Set wbActive = excel.Workbooks.Open("C:\Mappe1.xls")
Set wsActive = wbActive.Worksheets("Tabelle1")

'----------------- WinCC Variable schreiben --------------------
Dim objTag
Set objTag = HMIRuntime.Tags( "Test_Ex")
objTag.Value = wsActive.cells(1,1).Value
objTag.Write
'Set objTag = HMIRuntime.Tags(\"Schritt_2\")
'objTag.Value = wsActive.cells(4,3).Value
'objTag.Write
End Sub

Gruß Kai
 
Bei mir funktioniert das folgende VBScript als Aktion in WinCC Global Script:

Code:
Option Explicit
Function action
 
Dim objExcel 
Dim objWBExcel
Dim objWSExcel
 
Dim objTag
 
Set objExcel = CreateObject("Excel.Application") 
Set objWBExcel = objExcel.Workbooks.Open("F:\Mappe1.xls")
Set objWSExcel = objWBExcel.Worksheets("Tabelle1")
 
Set objTag = HMIRuntime.Tags("Excel")
objTag.Value = objWSExcel.Cells(1, 1).Value
objTag.Write
 
objWBExcel.Close
objExcel.Quit
 
End Function

Global_Script_1.jpg Global_Script_2.jpg

Das VBScript hat in WinCC Global Script einen zyklischen Trigger von 10 Sekunden:

Global_Script_3.jpg Global_Script_4.jpg

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nachtrag:

Im WinCC Explorer muss in der Komponente "Rechner" im Dialog "Eigenschaften Rechner" (Auswahl über das Kontextmenü) in der
Registerkarte "Anlauf" ein Haken bei "Global Script Runtime" stehen:

Rechner.jpg

Gruß Kai
 
Hallo Kai,

danke für deine Hilfe.
Ich galube das Problem liegt bei mir beim Trigger.
Wenn ich das Trigger-Symbol aktiviere, bekomme ich nur den Reiter Info.
Der Reiter Trigger fehlt bei mir:confused:
Was kann das sein.
Alle anderen Einstellungen wie von dir beschrieben habe ich soweit schon gehabt.

Gruß
Move
 

Anhänge

Hallo Kai,

ich bin es nochmal, habs jetzt gefunden, muss natürlich eine Aktion anlgegen und kein Modul. Jetzt ist auch der Trigger da.:)

Ich schätze jetzt wirds auch funzen, probiere es gleich morgen aus

Dankw
 
Zurück
Oben