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

Benny

Level-1
Beiträge
37
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin!

Hab folgendes Problem:
Will in WinCC eine Excel-Datei öffnen(versteckt/nicht sichtbar), auf die Tabelle die darin steht zugreifen und excel danach wieder schliessen. Ich bin so weit, dass ich in ein Eingabefeld in WinCC eine Zahl aus der Tabelle eingeben kann und beim betätigen eines START-Button der entsprechende Wert aus der Tabelle in einem Ausgabefeld erscheint. Mit dem BEENDEN-Button soll die Runtime und die geöffnete Excel-Datei geschlossen werden. Das Funktioniert soweit auch. (Excel-Prozess steht nicht mehr im Taskmanager)
Starte ich die Runtime aber erneut, öffnet er mir Excel 2x und bringt dann den Fehler "Excel wird gerade verwendet!"

Es soll eigentlich nur folgendes passieren:

Ich starte die Runtime --> die erforderlichExcel-Datei öffnet sich (versteckt) --> das funktioniert!!!!

Ich beende die Runtime mit dem von mir erstellten BEENDEN-Button -->Runtime wird geschlossen; Excel wird geschlossen --> funktioniert nicht richtig!

Was habe ich nicht beachtet?
 
Hallo Benny,

schau mal unter Beitrag WinCC v6.0 Archivdaten zu Excel.

Das ist ein Beispiel drin zur Exceleinbindung.



Gruss Siggi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für den Tip!

Kann damit aber leider nicht viel Anfangen. Gibt es in VBS kein Befehl der mir einfach jede Excel Datei schliesst, sodass beim erneuten starten nicht 2 Excel-Dateien parallel laufen, sondern immer nur die eine die beim Drücken des starten der Runtime beginnt?
 
Kann mir vielleicht jemand helfen? Wie greife ich denn von wincc (VBS) auf eine bereits geöffnete excel-datei zu?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kannst du mir dann eventuell behilflich sein bei dem problem, das ich anfangs geschildert habe? Hab so programmiert, das sich beim drücken der start taste, excel öffnet und bem Betätigen des ende Button wieder schliesst. das macht es auch beides, zumindest sieht es so aus. Excel erscheint zwar nicht mehr im Taskmanager, will ich die ganze Procedur (Start-->Ende) wieder machen, öffnet sich Excel 2x. Warum? Sieht so aus, als würde sich Excel, auch wenn es nicht mehr im Taskmanager erscheint, nicht vollständig schliesst. Wie kann ich das Problem lösen?
 
Excel schliessen

Datei xy.xls öffnen

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


Es gibt einen recht hilfreichen Trick:
Man zeichnet sich in Excel eine Makro auf kann dann die Befehle in WinCC VBS nutzen.

Gruss
 
Hallo uz71

Vielen Dank für deinen Tipp, bzw. den Text. So wie du es hier beschrieben hast, hab ich es ebenfalls geschrieben. Das funktioniert auch, aber nur einmal. Beim 2. Mal öffnet er mir Excel 2x im Taskmanager bzw. er hat mir Excel beim ersten mal nicht richtig geschlossen. Im Taskmanager steht nichts mehr von Excel. Nur wenn ich den Start Button betätige öffnet er es mir 2x. Warum?
 
Mahlzeit,

weiss einer wie man eine geöffnete Exceldatei (sichtbar) schliessen kann über eine Pfadangabe , z.B. D:\mappe1.xls ???
 
Kurz mal das was ich vor habe:

Ich habe einen Pfad z.B. C:\mappe3.xls. Dann möchte ich prüfen ob diese datei geöffnet ist. Das sollte man doch wenigstens hinkriegen. Wenn die Datei nicht geöffnet ist soll nix passieren wenn JA soll sie geschlossen werden.

Kann man da nicht was mit getobject machen ??

Hab alles rauf und runter schon probiert :((

Also mit der Brutalo methode hab ichs hingekriegt, d.h. alle Excelprozesse im Taskmanager killen.
 
Kurz mal das was ich vor habe:

Ich habe einen Pfad z.B. C:\mappe3.xls. Dann möchte ich prüfen ob diese datei geöffnet ist. Das sollte man doch wenigstens hinkriegen. Wenn die Datei nicht geöffnet ist soll nix passieren wenn JA soll sie geschlossen werden.

Kann man da nicht was mit getobject machen ??

Das mußt du ausprobieren.
Warum kennst du denn das Objekt und dessen Zustand nicht ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich generiere eine Exceldatei mit bestimmten Werten usw.. Die wird dann automatisch geschlossen. So später im Prozess möchte ich diese Datei wieder öffnen und worksheets graphen usw. adden was auch alles klappt. Es läuft alles im hintergrund ab.

Nur wenn jetzt jmd nahc dem ersten schreibvorgang die datei mit doppelklick oder sonst wie öffnet und ich das zweite mal schreiben will dann stürzt das Programm ab.

Deswegen will ich Datei schliessen bevor ich das 2. mal schreibe, oder ich muss was beim öffnen ändern.

???
 
So hab es hingekriegt endlich.

Mein Problem war wenn die Datei offen war und ich sie das 2. mal mit

Code:
set wbexcel = appexcel.workbooks.open ( Pfad )

geöffnet habe kam ein Fenster wo man eine kopie speichern konnte. Das war aber Mist und das Programm ist dann auch abgestürzt.

Es geht bestimmt das man sich die geöffnete Datei wieder hinbiegt mit visible usw. das man wieder schreiben kann aber das war mir dann zu kompliziert.

Hab mir aus einem anderen Beitrag im Forum und Getobject was zusammengebastelt.

Code:
Sub Ist_Excel_offen ( path )

'Variablen deklarieren
Dim fs 
Dim textfile
Dim fname
Dim excelobj

'Konstante
Const ForAppending = 8

'Fehlerbehnadlung aktivieren
On Error Resume Next

'Filesystemobjekt erstellen
Set fs       = CreateObject( "scripting.filesystemobject" )

'Versuchen die Datei zum Anhängen zu öffnen
Set textfile = fs.OpenTextFile( path, ForAppending )

'Wenn Fehler kommt dann Datei wieder schliessen
If Err.Number = 70 Then       
  Set excelobj = GetObject ( path )
      excelobj.close False           
End If

'Textdatei wieder schliessen
textfile.Close
On Error GoTo 0

'Speicher freigeben
Set fs       = Nothing
Set textfile = Nothing
Set fname    = Nothing
Set excelobj = Nothing

end sub

Ich muss zugeben Getobject hab ich nicht 100% verstanden. Aber falls die Datei mit dem angegeben Pfad offen ist kann man die schliessen.

Denke das Beispiel kann man auf beliebige Dateitypen ummünzen
 
Hallo Benny
habe ein Funktionsfähiges Beispielprogramm mit einer dazugehörigen Excel Tabelle. Du kannst es mit der Simulation bedienen und alle Funktionen testen. Die Bedienoberfläche ist mit WCCFlex erstellt als PC Applikation. Die Bedienung der Excel Tabelle läuft voll in Hintergrund ab. Alle schreib und Leberfunktionen werden über Symboltasten gesteuert. Wenn du Interesse daran hast kann ich es dir in den nächsten 2-3 Tagen auf dieser Seite bereitstellen.
Gruß Waldi
 
Zurück
Oben