Vbs Dateien auf Windows 2012 Server lassen sich nicht ausführen!
Hallo,
auf einem Server starte ich über einen geplanten Task zu einem bestimmten Zeitpunkt eine vbs. Datei die wiederrum ein Excel startet!
Das Excel führt dann über ein Workbook_Open bestimmt Abfrage durch erstellt ein PDF und schliesst sich wieder!
Das klappt auf zwei anderen Servern mit der selben Windows Server Installation ohne Probleme! Nur bei einem Server startet das Excel ohne die Abfragen auszuführen und schliesst sich sofort wieder!
Die Dokumente laufen einwandfrei und ich gehe nun davon aus, dass es irgendwelche Servereinstellungen sind, die das korrekte ausführen über die vbs Datei verhindern!
Achja stosse ich auf dem Server das Excel-Dokument manuel an gehts auch!
Habt ihr ne Idee?
Gruß
auf einem Server starte ich über einen geplanten Task zu einem bestimmten Zeitpunkt eine vbs. Datei die wiederrum ein Excel startet!
Dim objExcel
Dim objWorkbook
Set objExcel = CreateObject("excel.application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Test.xlsm")
objExcel.Visible = True
objExcel.DisplayAlerts = False
objWorkbook.Close
Das Excel führt dann über ein Workbook_Open bestimmt Abfrage durch erstellt ein PDF und schliesst sich wieder!
Das klappt auf zwei anderen Servern mit der selben Windows Server Installation ohne Probleme! Nur bei einem Server startet das Excel ohne die Abfragen auszuführen und schliesst sich sofort wieder!
Die Dokumente laufen einwandfrei und ich gehe nun davon aus, dass es irgendwelche Servereinstellungen sind, die das korrekte ausführen über die vbs Datei verhindern!
Achja stosse ich auf dem Server das Excel-Dokument manuel an gehts auch!
Habt ihr ne Idee?
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 314148
Url: https://administrator.de/contentid/314148
Ausgedruckt am: 25.11.2024 um 06:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo Snewi,
du solltest die Anweisung Application.DisplayAlerts = False vor die Öffnen-Anweisung setzen, da bereits beim Öffnen Dialogfelder die erfolgreiche automatische Ausführung verhindern können. Außerdem solltest du diese Anweisung am Ende wieder auf True zurücksetzen da diese permanent wirkt, also Anwender sonst hinterher überhaupt keine Dialoge mehr zu Gesicht bekommen!
Das "visible = True" bringt natürlich nur was wenn der Task mit den Credentials des gerade angemeldeten Users im Task ausgeführt wird. Excel solltest du ebenfalls hinter wieder schliessen, nicht nur das Workbook
Zusätzlich würde ich hier nicht auf das Open_Event setzen sondern das Makro direkt aus der VBS heraus explizit starten oder es besser gleich in die VBS integrieren. Denn dort kannst du alles machen was du innerhalb von Excel auch machen kannst.
Zusätzlich sollten die vertrauenswürdigen Speicherorte überprüft werden in der das Dokument liegt. Und poste doch bitte deine Einstellungen für den Task. Denke daran das Netzlaufwerke hier Sessionabhängig sind und man in Tasks generell besser auf UNC Angaben setzen sollte.
Grüße Uwe
du solltest die Anweisung Application.DisplayAlerts = False vor die Öffnen-Anweisung setzen, da bereits beim Öffnen Dialogfelder die erfolgreiche automatische Ausführung verhindern können. Außerdem solltest du diese Anweisung am Ende wieder auf True zurücksetzen da diese permanent wirkt, also Anwender sonst hinterher überhaupt keine Dialoge mehr zu Gesicht bekommen!
Das "visible = True" bringt natürlich nur was wenn der Task mit den Credentials des gerade angemeldeten Users im Task ausgeführt wird. Excel solltest du ebenfalls hinter wieder schliessen, nicht nur das Workbook
Zusätzlich würde ich hier nicht auf das Open_Event setzen sondern das Makro direkt aus der VBS heraus explizit starten oder es besser gleich in die VBS integrieren. Denn dort kannst du alles machen was du innerhalb von Excel auch machen kannst.
Zusätzlich sollten die vertrauenswürdigen Speicherorte überprüft werden in der das Dokument liegt. Und poste doch bitte deine Einstellungen für den Task. Denke daran das Netzlaufwerke hier Sessionabhängig sind und man in Tasks generell besser auf UNC Angaben setzen sollte.
Grüße Uwe
Wird der Task mit einem Account ausgeführt der gerade angemeldet ist. D.h auf den Servern ist dauern jemand angemeldet ?? Denn die Dialoge wird kein Mensch sehen wenn es als Task ausgeführt wird und niemand angemeldet ist! Also sämtliche Dialoge weglassen und nur die tatsächlichen Aufgaben ausführen lassen.
Dialoge und Fenster sind nur sichtbar wenn man so einen Task mit dem selben Account ausführen lässt der gerade angemeldet ist, da nur diese in der selben GUI-Session laufen!
Wie ich geschrieben habe, diese eine Arbeit das Datum in eine Zelle einzutragen lässt sich doch ganz einfach in die VBS integrieren ... Lass das OpenEvent weg und schreibe es den Aufruf direkt in die VBS.
Btw. du speicherst dein Sheet ja gar nicht, kann also auch keine Änderung erkenntlich sein.
Dialoge und Fenster sind nur sichtbar wenn man so einen Task mit dem selben Account ausführen lässt der gerade angemeldet ist, da nur diese in der selben GUI-Session laufen!
Wie ich geschrieben habe, diese eine Arbeit das Datum in eine Zelle einzutragen lässt sich doch ganz einfach in die VBS integrieren ... Lass das OpenEvent weg und schreibe es den Aufruf direkt in die VBS.
Btw. du speicherst dein Sheet ja gar nicht, kann also auch keine Änderung erkenntlich sein.
Muss ich dann im Task benutzer angeben?
Ja. Dieser muss Zugriff auf das File und das Ziel der PDF haben. In deinem Code wird aber PDF technisch nichts dergleichen gemacht soweit du das hier gespostet hast.kannst du mir sagen was ich in dem vbs dann schreiben muss?
Dim objExcel, objWorkbook
Set objExcel = CreateObject("excel.application")
With objExcel
.Visible= True
.DisplayAlerts = False
.ScreenUpdating = False
.EnableEvents = False
With .Workbooks.Open("C:\test.xlsx")
.Worksheets(1).Range("C3").Value = DateAdd("d",-1,Date)
' sonst noch Dinge die du erledigen willst ...
.Close
End With
.DisplayAlerts = True
.ScreenUpdating = True
.EnableEvents = True
.Quit
End With
verstehe einfach nicht, dass es so wie ich es jetzt mache ja überall geht nur auf einem Server eben nicht!
hellsehen kann ich nicht wenn du so wenig Details zum Task und der Umgebung postest. Logge einfach alle Aktivitäten dann siehst du wo's hakt
Super, auf diese Art Antwort habe ich schon gewartet , ich laufe hier gegen Windmühlen ...Wozu schreibe ich das oben eigentlich alles?? Natürlich musst du deine Routine die das PDF erstellt noch in den Code mit einbauen, das war ja nur das was ich von deinem Code hatte, da war nichts von irgendeiner PDF Export-Routine enthalten.
Wenn ich noch nicht mal weiß was genau alles passieren soll?!
Und jede Menge andere Möglichkeiten ...
Ohne deine Kisten und die Umgebung näher zu kennen, sehr schwer einzuschätzen was bei dir schief läuft. Sicherheitscenter gecheckt? (hatte ich oben auch schon alles gefragt, nur keine Antwort erhalten!)
Mit null exakten Fakten mit welchen Parametern/Accounts etc. dein Task ausgeführt wird und was sonst noch in deinem Excel-Sheet passiert kann ich hier nicht helfen, also bemühe dich doch bitte etwas mehr uns mit den Fakten zu versorgen anstatt zu schreiben "es passiert nix". DANKE.
Wenn ich noch nicht mal weiß was genau alles passieren soll?!
nur wie bekomme ich das Excel wieder geschlossen?
taskkill /?Und jede Menge andere Möglichkeiten ...
Ohne deine Kisten und die Umgebung näher zu kennen, sehr schwer einzuschätzen was bei dir schief läuft. Sicherheitscenter gecheckt? (hatte ich oben auch schon alles gefragt, nur keine Antwort erhalten!)
Mit null exakten Fakten mit welchen Parametern/Accounts etc. dein Task ausgeführt wird und was sonst noch in deinem Excel-Sheet passiert kann ich hier nicht helfen, also bemühe dich doch bitte etwas mehr uns mit den Fakten zu versorgen anstatt zu schreiben "es passiert nix". DANKE.
Dann erstellt doch bitte mal ein Test.xlsm in der du im OpenEvent eine einfache MsgBox ausgibst, erscheint diese nicht weist du schon das das Event nicht ausgeführt wird.
Ich vermute das du einmal das .EnableEvents nicht auf True zurückgesetzt hast und deswegen das OpenEvent seit dem nicht mehr ausgeführt wird. Diese Einstellung ist nämlich permanent, genauso wie das DisplayAlerts das du für den Test rausnehmen solltest damit Fehlermeldungen überhaupt erst angezeigt werden.
Also mal manuell in Excel sowohl DisplayAlerts als auch EnableEvents wieder auf True zurücksetzen und dann nochmal testen.
Ich vermute das du einmal das .EnableEvents nicht auf True zurückgesetzt hast und deswegen das OpenEvent seit dem nicht mehr ausgeführt wird. Diese Einstellung ist nämlich permanent, genauso wie das DisplayAlerts das du für den Test rausnehmen solltest damit Fehlermeldungen überhaupt erst angezeigt werden.
Also mal manuell in Excel sowohl DisplayAlerts als auch EnableEvents wieder auf True zurücksetzen und dann nochmal testen.