ich muss in abgemeldetem Zustand nachts Excel-Berechnungen per Makro durchführen. Dazu habe ich einen Task erstellt. Da beim Aufruf von Excel per Task nicht direkt ein Makro gestartet werden kann, muss ich das mittels vbs - script tun. Leider funktioniert das nur mit einem Admin-Konto. Ich habe aber dafür maximal einen user mit Hauptbenutzerrechten.
Mittels eines Log-Files habe ich herausgefunden, dass der normale bzw. haupt-user in abgemeldetem Zustand das createobject nicht bekommt.
Wie kann man das mit einem user oder Hauptbenutzer lösen?
Hier ist der code. Den code in eine vbs, z.B. exceltest.vbs, und selbige in einem Task aufrufen, z.B. d:\test\exceltest.vbs. Die log - Ausgabe erfolgt in d:\test.
Dim LF_stamp, lF_Logfile Const ERR_OK_ = 0 LF_stamp = Now LF_Info "Start" Set oExcel = CreateObject("Excel.Application") myVers = oExcel.Version LF_stamp = Now LF_Info "Version: " & myVers oexcel.quit LF_stamp = Now LF_Info "Ende" '---------------------------------------------------------------------- Function LF_Info(text) '--- schreibt eine Zeile in das logfile, dabei wird das File jeweils geöffnet und wieder ' geschlossen Dim err_code err_code = LF_Open() If err_code = ERR_OK_ Then 'Falls öffnen erfolgreich war, Zeile schreiben und wieder schliessen LF_logfile.WriteLine LF_stamp & "+" & Chr(9) & text LF_logfile.Close Set LF_logfile = Nothing End If LF_Info = err_code End Function '---------------------------------------------------------------------- Function LF_Open() '--- öffnet das logfile (vor jedem schreiben!), wird nur intern benutzt Dim FileSystem Dim err_code, err_count OpenFile = "d:\test\test.log" Set FileSystem = CreateObject ("Scripting.FileSystemObject") Set LF_logfile = Nothing While (LF_logfile is nothing ) and err_count < 5 ' TextFile öffenen, Append , anlegen falls nicht vorhanden) Set LF_logfile = FileSystem.OpenTextFile (OpenFile, 8, true) If (LF_logfile is nothing ) Then err_count=err_count+1 Else err_code = ERR_OK_ End If Wend LF_Open = err_code End Function