Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 40 von 40

Thema: Öffnen un Schliessen einer Excel-Datei mit WinCC (VBS)

  1. #31
    Registriert seit
    30.01.2009
    Beiträge
    440
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    ich denke das Problem liegt nicht am Excel-Sheet.
    Ich habe jetzt mal eine Tabelle angelegt mit zwei
    Zahlen als Eintrag, also ganz simpel.

    Dann diese mit VBS geöffent, gespeichert und geschlossen.
    Fazit: Im Taskmanager bleibt Excel.exe stehen.
    Schliesse ich die Excel-Datei händisch also click auf [x], dann verschwindet auch Excel.exe.

    Was kann es sein?

    Gruß
    Move

  2. #32
    Registriert seit
    01.05.2009
    Beiträge
    74
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja das ist alles ein bisschen wirr.

    aber wenn du willst kann ich dir hier die brutalo methode posten die alle excel.exe prozesse aus dem taskmanager killt. ist zwar nicht elegant aber geht wenn dich das zufrieden stellt

  3. #33
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    ... also auch wenn du Verweise auf ein anderes Sheet hast sollte das keine neue Instanz erzeugen. Ggf. im Sheet gemachte Änderungen behandelt der ".close true".
    Wann wird dein Script aufgerufen ?
    Hast du mal den taskmanger beobachtet um zu sehen wann Excel das 2. Mal gestartet wird ?

    Gruß
    Larry

  4. #34
    Registriert seit
    26.09.2010
    Beiträge
    64
    Danke
    9
    Erhielt 12 Danke für 7 Beiträge

    Standard

    Hallo Benny

    hier das Versprochene Beispielprogamm. Das Projekt bitte auf das Verzeichnis C:\ ablegen, damit auf die Tabellen zugegriffen werden kann.
    Softwarestand: Step7 Version 5.5 WinCC 2008 SP2.

    Vorgehensweise zum Testen:

    In Stepp7 Programm ist ein Verzeichnis ProgFuer_Simulator, Simulation öffnen und diese Bausteine in den Simulator laden und mit P-Run starten.
    Dann mit Bild "Tabelle" WinCC öffnen, danach mit dem Button "Runtime Start" Projekt aktivieren.

    Dieses Beispiel ist aus einen von meinen Projekten erstellt worden, und ist somit kein rein Zugeschnittenes Beispielprogramm. Es wird bei schreib und Leseaktionen abgefragt, ob schon ein Excel Prozess aktiv ist.
    Wenn du die Syntax zur Abfrage der Explizierten Tabelle hast, könntest du? die Skriptanweisung auf dieser Seite veröffentlichen.

    Mit freundlichen Grüßen
    Waldi
    Angehängte Grafiken Angehängte Grafiken
    Angehängte Dateien Angehängte Dateien

  5. #35
    Registriert seit
    30.01.2009
    Beiträge
    440
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard

    Hallo Larry,

    also das Script wird derzeit jede Minute aufgerufen, im Endausbau jedoch nur alle 24h.
    Die Excel.exe wird im Task-Manager eingetragen,sobald die Excel-Datei gestartet wird und bleibt dann dort bestehen auch wenn die Datei per Script wieder geschlossen wird.
    Nach Ablauf der Minute kommt das die nächste Excel.exe usw usw.
    Nur wenn ich die Excel-Datei selber händisch schliesse, dann verschwindet auch die Excel.exe.
    Sehr suspekt..

    Gruß Move

  6. #36
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von uz71 Beitrag anzeigen
    Dim objExcelApp
    Set objExcelApp = CreateObject("excel.Application")
    objExcelApp.Visible = 0 'Excel sichtbar oder nicht sichtbar
    objExcelApp.Workbooks.Open "c:\xy.xls" '

    Datei xy.xls schließen

    objExcelApp.Workbooks.Close 'Exceldatei schlissen
    objExcelApp.Quit 'Excel schlissen
    Set objExcelApp = Nothing 'Variable freigeben
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    wenn du die Sequenz so beendest :
    Code:
    objExcelApp.Workbooks.Close True 
    objExcelApp.Quit
    ... dann wird das Workbook geschlossen ohne weitere Rückfrage.
    Das "objExcelApp.Quit" beendet die Excel-Instanz im Task-Manager. Wenn die bei dir im Speicher bleibt dann hast du die Befehle wohl anscheinend nicht korrekt angewendet oder eingegeben.
    In dem folgenden VBScript funktioniert der obige Programmcode von Larry Laffer nicht richtig:

    Code:
    Dim objExcel 
    Dim objWBExcel
    Dim objWSExcel
     
    Set objExcel = CreateObject("Excel.Application") 
    Set objWBExcel = objExcel.Workbooks.Open("F:\Mappe1.xls")
    Set objWSExcel = objWBExcel.Worksheets("Tabelle1")
     
    objWSExcel.Cells(2, 1).Value = objWSExcel.Cells(1, 1).Value * 2
     
    objExcel.Workbooks.Close True 
    objExcel.Quit
    Das VBScript bricht mit einem Laufzeitfehler in der folgenden Programmzeile ab:

    Code:
    objExcel.Workbooks.Close True
    Windows_Script_Host.jpg

    Die nachfolgende Programmzeile wird nicht mehr bearbeitet und die Excel-Instanz wird im Windows Task-Manager nicht beendet:

    Code:
    objExcel.Quit
    Mit der nachfolgenden Programmänderung funktioniert das VBScript dann richtig:

    Code:
    Dim objExcel 
    Dim objWBExcel
    Dim objWSExcel
     
    Set objExcel = CreateObject("Excel.Application") 
    Set objWBExcel = objExcel.Workbooks.Open("F:\Mappe1.xls")
    Set objWSExcel = objWBExcel.Worksheets("Tabelle1")
     
    objWSExcel.Cells(2, 1).Value = objWSExcel.Cells(1, 1).Value * 2
     
    objWBExcel.Close True
    objExcel.Quit
    Siehe dazu auch das folgende Programmbeispiel:

    http://www.sps-forum.de/showpost.php...6&postcount=11

    Gruß Kai

  7. #37
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von Move Beitrag anzeigen
    Das schliessen funktioniert aber die Excel.exe in der Task bleibt erhalten

    Option Explicit
    Function action
    Dim excel, wbActive, wsActive
    'Create an Excel-Application object
    Set excel = CreateObject("Excel.Application")
    excel.Visible = 0
    Set wbActive = excel.Workbooks.Open("D:\Postfach\KIS Wetterprognose WinCC.xls")
    Set wsActive = wbActive.Worksheets("Tabelle1")
    '----------------- WinCC Variable schreiben --------------------
    'wsActive.cells(2,3) = Zeile 2, Spalte 3

    Dim objTag

    Set objTag = HMIRuntime.Tags("Temp_00_T0_B2") ' Temperatur 0:00 Uhr
    objTag.Value = wsActive.cells(2,2).Value
    objTag.Write

    Set objTag = HMIRuntime.Tags("Temp_01_T0_B3") ' Temperatur 1:00 Uhr
    objTag.Value = wsActive.cells(3,2).Value
    objTag.Write

    ' etc...

    excel.Workbooks.Close True 'Exceldatei schliessen
    excel.Quit 'Excel schliessen
    Set excel = Nothing 'Variable freigeben
    End Function
    Das VBScript sollte mit der folgenden Programmänderung funktionieren:

    Option Explicit
    Function action
    Dim excel, wbActive, wsActive
    'Create an Excel-Application object
    Set excel = CreateObject("Excel.Application")
    excel.Visible = 0
    Set wbActive = excel.Workbooks.Open("D:\Postfach\KIS Wetterprognose WinCC.xls")
    Set wsActive = wbActive.Worksheets("Tabelle1")
    '----------------- WinCC Variable schreiben --------------------
    'wsActive.cells(2,3) = Zeile 2, Spalte 3

    Dim objTag

    Set objTag = HMIRuntime.Tags("Temp_00_T0_B2") ' Temperatur 0:00 Uhr
    objTag.Value = wsActive.cells(2,2).Value
    objTag.Write

    Set objTag = HMIRuntime.Tags("Temp_01_T0_B3") ' Temperatur 1:00 Uhr
    objTag.Value = wsActive.cells(3,2).Value
    objTag.Write

    ' etc...

    wbActive.Close True 'Exceldatei schliessen
    excel.Quit 'Excel schliessen
    Set excel = Nothing 'Variable freigeben
    End Function
    Gruß Kai

  8. #38
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Nachtrag:

    Der Speicher, den die Excel-Objekte belegen, muss freigegeben werden, damit die Excel-Instanz im Windows Task-Manager beendet wird.

    Während der Laufzeit des VBScripts kann der Speicher freigegeben werden, indem den Objektvariablen der Wert Nothing zugewiesen wird.

    Ansonsten wird spätestens beim Beenden des VBScripts der verwendete Speicher wieder freigegeben

    Code:
    Dim objExcel 
    Dim objWBExcel
    Dim objWSExcel
     
    Set objExcel = CreateObject("Excel.Application") 
    Set objWBExcel = objExcel.Workbooks.Open("F:\Mappe1.xls")
    Set objWSExcel = objWBExcel.Worksheets("Tabelle1")
     
    objWSExcel.Cells(2, 1).Value = objWSExcel.Cells(1, 1).Value * 2
     
    objWBExcel.Close True
    objExcel.Quit
     
    Set objWSExcel = Nothing
    Set objWBExcel = Nothing
    Set objExcel = Nothing
    Code:
    Option Explicit
    Function action 
    Dim excel, wbActive, wsActive 
    'Create an Excel-Application object 
    Set excel = CreateObject("Excel.Application") 
    excel.Visible = 0
    Set wbActive = excel.Workbooks.Open("D:\Postfach\KIS Wetterprognose WinCC.xls") 
    Set wsActive = wbActive.Worksheets("Tabelle1") 
    '----------------- WinCC Variable schreiben -------------------- 
    'wsActive.cells(2,3) = Zeile 2, Spalte 3
     
    Dim objTag 
     
    Set objTag = HMIRuntime.Tags("Temp_00_T0_B2") ' Temperatur 0:00 Uhr
    objTag.Value = wsActive.cells(2,2).Value 
    objTag.Write 
     
    Set objTag = HMIRuntime.Tags("Temp_01_T0_B3") ' Temperatur 1:00 Uhr 
    objTag.Value = wsActive.cells(3,2).Value 
    objTag.Write 
     
    ' etc...
     
    wbActive.Close True 'Exceldatei schliessen 
    excel.Quit 'Excel schliessen 
    Set wsActive = Nothing 'Speicher freigeben
    Set wbActive = Nothing
    Set excel = Nothing 
    End Function
    Gruß Kai

  9. Folgender Benutzer sagt Danke zu Kai für den nützlichen Beitrag:

    Move (04.04.2011)

  10. #39
    Registriert seit
    30.01.2009
    Beiträge
    440
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard

    Hi an alle,

    also genützt hat bisher nichts, aber ich habe jetzt mal auf verschiedenen Rechnern mein Script laufen lassen und siehe da, auf beiden Rechnern (Office 2003 SP3 + Office 2002) funktioniert alles, excel.exe wird geschlossen. Nur auf meinem Rechner (auch Office 2003, Excel 11.8307.8221 SP3) läuft es nicht. Ich schätze da ist bei mir was vergurkt?
    Ich versuche es mal mit einer Neuinstallation und melde mich nochmal.

    Gruß
    Move

  11. #40
    Registriert seit
    30.01.2009
    Beiträge
    440
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Fangemeinde,

    bin jetzt auf der Anlage wo auch der Siemens-Rechner (Rack-PC) mit der install. Office 2003 Version steht.
    Hier funktioniert jetzt alles tadellos. Excel.exe schließt jedesmal nach Scriptende.

    Also Dank an alle.

    Gruß
    Move

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 02.03.2009, 13:04
  2. WinCC Flex - WordPad Datei öffnen
    Von eYe im Forum HMI
    Antworten: 15
    Letzter Beitrag: 28.05.2008, 08:29
  3. WinCC: Faceplate schliessen mit C-Sript
    Von kipphase im Forum HMI
    Antworten: 0
    Letzter Beitrag: 08.04.2008, 07:46
  4. WinCC: Meldearchiv per Skript schliessen
    Von Grosser im Forum HMI
    Antworten: 1
    Letzter Beitrag: 02.05.2007, 06:42
  5. WinCC TagLogging Datei öffnen
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 11.04.2005, 20:11

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •