snewi
Goto Top

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!

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ß

Content-ID: 314148

Url: https://administrator.de/contentid/314148

Ausgedruckt am: 25.11.2024 um 06:11 Uhr

colinardo
colinardo 03.09.2016 aktualisiert um 12:44:17 Uhr
Goto Top
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 face-wink

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
Snewi
Snewi 05.09.2016 um 13:42:39 Uhr
Goto Top
Hallo colinardo,

in meiner Arbeitsmappe steht das:

Sub Workbook_Open()
                   
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .EnableEvents = False
    End With
  
    Sheets(1).Cells(3, 3) = Format((Now - 1), "dd.mm.yyyy")  
    frm_ProgressBar.AutoOpen = True
    frm_ProgressBar.Show

    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
        .EnableEvents = True
    End With
    
End Sub

das klappt auch alles wunderbar nur bei diesem einen Server nicht! Kannst du mir eventuell sagen was ich mal versuchen könnte?

welchen Einstellungen für den Task möchtest du wissen? Der Task läuft, öffnet das Excel und schliesst es auch sofort wieder face-sad

Gruß
colinardo
colinardo 05.09.2016 aktualisiert um 14:09:17 Uhr
Goto Top
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.
Snewi
Snewi 05.09.2016 um 15:23:27 Uhr
Goto Top
hi,
kannst du mir sagen was ich in dem vbs dann schreiben muss?

verstehe einfach nicht, dass es so wie ich es jetzt mache ja überall geht nur auf einem Server eben nicht! auf den Servern ist nicht zwingend immer jemand angemeldet! Muss ich dann im Task benutzer angeben?

Ich brauche das nicht speichern! ich erstelle ein PDF und lege es lokal ab! Dann schliesst Excel sich und gut!

Gruß
colinardo
colinardo 05.09.2016 aktualisiert um 15:38:41 Uhr
Goto Top
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
Snewi
Snewi 07.09.2016 um 08:36:26 Uhr
Goto Top
Guten Morgen,

leider das gleiche in grün! Es passiert nix!

Kann ich das eventuell über eine bat. starten? Denn da macht er alles so wie ich es will!

rem Starten
START excel \\Pfad\Bericht.xlsm

nur wie bekomme ich das Excel wieder geschlossen?

Gruß
colinardo
colinardo 07.09.2016 aktualisiert um 09:04:14 Uhr
Goto Top
Zitat von @Snewi:
leider das gleiche in grün! Es passiert nix!
Super, auf diese Art Antwort habe ich schon gewartet face-sad , 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?!
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.
Snewi
Snewi 07.09.2016 um 09:11:04 Uhr
Goto Top
ich will das aber nicht alles über das vbs machen, da der Bericht auch manuell über Excel gestartet werden kann!

Also:

ich starte mein vbs und das wiederrum excel! Was Excel macht kann doch erstmal egal sein oder? Ich frage mich einfach, da das vbs auf diesem einen Server (Testserver) - es gibt einen gleichen Server (ProdServer) da läuft es - nicht läuft was ich zu tun habe damit auch hier das vbs läuft!

JA es wurden alle Sicherheitseinstellungen vom Admin mit der Prod-MAschine verglichen! Leider alle gleich face-sad
Da ich nicht der Server-Admin bin , kann ich dich leider nicht mit genauen Details versorgen!


Gruß
colinardo
colinardo 07.09.2016 aktualisiert um 09:21:32 Uhr
Goto Top
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.
Snewi
Snewi 07.09.2016 um 09:23:19 Uhr
Goto Top
Also nochmal:

Das Problem liegt definitiv nicht beim Excel! HAbe jetzt mal eine neue TestDatei erstellt die beim Öffnen eine einfach MsgBox ausgibt! Mehr macht das Dokument nicht! Manuel funktioniert! Über die bat auch über vbs nicht!

gruß
Snewi
Snewi 07.09.2016 um 09:24:46 Uhr
Goto Top
Auch über Display Alert raus keine Fehlermeldung!!!