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

Hilfe
Neues Thema
Antworten

Nach oben

