WinCC Flex Skript Probleme ( mit Win7 )

DeltaMikeAir

User des Jahres 2018; 2023
Beiträge
21.463
Reaktionspunkte
7.076
Zuviel Werbung?
-> Hier kostenlos registrieren
WinCC flexible Skript Probleme ( mit Win7 )

Guten Morgen zusammen,

ich habe eine funktionierende WinCC flex Runtime Projektierung. Nun stelle ich den PC von WinXP auf Win7 um und
habe auf einmal Probleme mit einem Skript. Mit diesem Lade ich ein paar Daten aus einer TXT Datei.

Auf WinXP funktioniert es noch, unter Win7 nicht mehr. Ich hänge ein Bild vom VB Debugger an.
Wie muss der Befehlt für Win7 geändert werden bzw. muss eine Option installiert werden?

Software:
WinCC flex 2008 SP3 Upd7 ( inkl. Runtime )
Win7 64Bit Ultimate

1.png


Mit Grüßen und Danke für die Hilfe!
 
Zuletzt bearbeitet:
Könnte es sein, dass du den Wert in den Klammern mit "" setzen musst?

Ansonsten hab ich bei mir stehen
Code:
Set Objekt = CreateObject("Scripting.FileSystemObject")
Das wird aber nicht das gleiche sein, ich will nur auf ne Datei zugreifen und keinen User Dialog erstellen.
 
Hallo Mike,
die Meldung ist eigentlich eindeutig : dem System fehlt das ActiveX (-Control) "UserAccounts".
Ich kenne dieses ActiveX gar nicht ... woher kommt das ?
Vom Script-Handling gibt es sonst keine (mir bekannten) Unterschiede zwischen WinXP und Win7 ...

Gruß
Larry
 
Könnte das evtl. ein Problem mit den Benutzerrechten auf dem PC sein?
Larry,
ich kann aus der Meldung nicht erkennen, ob es fehlt oder kein Zugriff gestattet wird.

Ich habe das ganze jetzt auf 2 Win7 Rechnern gestartet. Immer das gleiche Problem.
Auf ca. 80 WinXP Rechnern läuft es seit Jahren.

Mit Grüßen
 
Code:
Dim strFilename, Dialog, fso
Dim Filename

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set Filename = HmiRuntime.SmartTags("Daten\Dateiname")

Dialog = "UserAccounts.CommonDialog"
'für Dateiauswahl (Win-Explorer)
Set Dialog = CreateObject(Dialog)
Dialog.Flags = &H0004
Dialog.ShowOpen

Filename.Value = Dialog.FileName
HmiRuntime.SmartTags("Daten\Dateiname") = Filename.Value
Set Dialog = Nothing
Dialog.InitialDir = "\\Daten\Linie4\

  Dim fs, F, we, sn
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set F = fs.OpenTextFile(Filename, ForReading)

  Dim WEFile, Datenfeld
 
  WEFile = F.ReadLine
  Datenfeld = Split(WEFile, ";", -1, 1)

 ' Daten von Textdatei in DB-Variablen schreiben  
    SmartTags("Daten\Datenfeld0") = Datenfeld(0)
    SmartTags("Daten\Datenfeld1")= Datenfeld(1)
    SmartTags("Daten\Datenfeld2")= Datenfeld(2)
    SmartTags("Daten\Datenfeld3")= Datenfeld(3)
    F.Close

Wird das Skript aufgerufen, öffnet sich das Windows "öffnen" Fenster und ich kann eine Datei öffnen.
Die einzelnen Zeilen schreibe ich dann in eine Variable.

Mittlerweile habe ich herausgefunden, dass die Funktion "UserAccounts.CommonDialog" ab allem nach WinXP nicht mehr
unterstützt wird. Ich werde also alle Projekte anfassen müssen und das ganze richtig stellen.

Mit Grüßen
 
Hat vielleicht einer ein Beispiel zum öffnen und auswerten einer Datei ( mit dem Windows Öffnen Fenster ),
welches mit Win7 kompatibel ist. Als denkanstoß.

Mit Grüßen

Hier noch die Antwort von Siemens:
"Generell ist das von ihnen verwendete Systemobjekt von Windows in Windows 7 nicht mehr verwendbar um einen Dateibrowser aufblenden zu lassen."
 
Zuletzt bearbeitet:
Code:
Dim shell : Set shell = CreateObject("WScript.Shell")
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") 


Dim tempFolder : Set tempFolder = fso.GetSpecialFolder(2)
Dim tempFilename : tempFilename = fso.GetTempName() & ".ps1"
Dim tempFullname : tempFullname = tempFolder & "\" & tempFilename


Dim pathResultFilename : pathResultFilename = fso.GetTempName()
Dim pathResultFullname : pathResultFullname = tempFolder & "\" & pathResultFilename


Dim filePath
Dim isFilePathValid
isFilePathValid = False


Dim powershellcommandline : powershellcommandline = "powershell -executionpolicy bypass -nologo -windowstyle hidden -File"


If fso.FileExists(pathResultFullname) Then
    fso.DeleteFile pathResultFullname
End If


Dim tempFile : Set tempFile = fso.CreateTextFile(tempFullname)
tempFile.Write _ 
"[void] [Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')" & vbCrLf & _ 
"$d = New-Object Windows.Forms.OpenFileDialog" & vbCrLf & _ 
"$d.ShowHelp = $true" & vbCrLf & _ 
"$d.Filter = ""CSV Dateien (*.csv)|*.csv|TXT Dateien (*.txt)|*.txt|Alle Dateien (*.*)|*.*""" & vbCrLf & _ 
"$dresult = $d.ShowDialog()" & vbCrLf & _
"$resultFilename = """ & pathResultFullname & """" & vbCrLf & _
"if($dresult -eq 'OK')" & vbCrLf & _
"{" & vbCrLf & _
"Add-Content $resultFilename $d.FileName" & vbCrLf & _
"}" & vbCrLf & _
"else" & vbCrLf & _
"{" & vbCrLf & _
"Add-Content $resultFilename ''" & vbCrLf & _
"}" & vbCrLf
tempFile.Close




shell.Run powershellcommandline & " " & tempFullname, 1, True


If fso.FileExists(tempFullname) Then
    fso.DeleteFile tempFullname
End If


Dim resultFile : Set resultFile = fso.OpenTextFile(pathResultFullname, 1)
filePath = Replace(resultFile.ReadAll, vbCrLf, "")
resultFile.Close
If (fso.FileExists(filePath)) Then
    isFilePathValid = True
Else
    isFilePathValid = False
End If


If fso.FileExists(pathResultFullname) Then    
    fso.DeleteFile pathResultFullname
End If


SmartTags("BrowseForFile") = filePath
 
Zuviel Werbung?
-> Hier kostenlos registrieren
es gibt mittlerweile in WinCC auch eine SystemFunktion die einen Dateibrowser öffnet. "ÖffneDateiBrowser"
Die gibts für PC-Runtime und auch auf Comfort Panels (was bei der Skript Lösung nicht geht)
Ist vielleicht eine Alternative.

Gruß, Nico
 
Zurück
Oben