Öffnen einer Excel-Datei mittels eines in VB.NET geschriebenen Programms, aufgerufen durch die Aufgabenplanung von Windows 10 (OHNE angemeldeten Benutzer)

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von guromu.

    Öffnen einer Excel-Datei mittels eines in VB.NET geschriebenen Programms, aufgerufen durch die Aufgabenplanung von Windows 10 (OHNE angemeldeten Benutzer)

    Hallo verehrtes Forum,
    folgendes Szenario:
    Auf einem aktuellen Windows 10/64 Bit - Rechner soll abends ein in VB.NET (Zielframework: .NET Framework 3.0) geschriebenes Programm mittels "Aufgabenplanung" des Betriebssystems gestartet werden. Dieses Programm soll eine Excel-Datei öffnen, Informationen hinein schreiben und unter einem anderen Namen abspeichern. Wichtig: Die Aufgabenplanung soll das Programm wie gesagt abends starten, wenn KEIN User angemeldet ist. Die Kontoeinstellungen unter der die Aufgabenplanung das Programm startet sind die eines Domänen-Admins (Lokaler Admin habe ich auch probiert - Ohne Erfolg.)
    Das hat bis vor ca. 2-3 Monaten auch funktioniert. Seit einiger Zeit (Mutmaßlich seit einem Windows-Update im Mai) funktioniert es nicht mehr.
    Durch Logging habe ich die Problematik auf die Stelle eingegrenzt, in der die Excel-Datei geöffnet werden soll.
    Hier ein Codeabriss um die betreffende Stelle herum:

    Dim xls As New Excel.Application
    Call LogInformation("a2 Err.Number: " & Err.Number)
    ExcelTemplate = "C:\SMS.xlsx"
    xls.Visible = False
    Call LogInformation("a3 Err.Number: " & Err.Number)
    If File.Exists(ExcelTemplate) Then
    Call LogInformation("a3a1 Err.Number: " & Err.Number & " ExcelTemplate: " & ExcelTemplate)
    Try
    xls.Workbooks.Open(ExcelTemplate)
    Catch ex As Exception
    Call LogInformation("BBBBBBBBBBBBBBBB Err.Number: " & Err.Number & " ExcelTemplate: " & ExcelTemplate & vbCrLf & "Err.Description: " & Err.Description)
    Exit Sub
    End Try
    Call LogInformation("a3a2 Err.Number: " & Err.Number)
    Else
    Call LogInformation("a3b1 Err.Number: " & Err.Number & " ExcelTemplate: " & ExcelTemplate)
    End If


    Das Logging schreibt die Log-Informationen (Datum, Uhrzeit, err.number und err.description) in eine TXT-Datei. Hier die entsprechenden Informationen:

    30.07.2018 10:37:02 a2 Err.Number: 0
    30.07.2018 10:37:02 a3 Err.Number: 0
    30.07.2018 10:37:02 a3a1 Err.Number: 0 ExcelTemplate: C:\SMS.xlsx
    30.07.2018 10:37:03 BBBBBBBBBBBBBBBB Err.Number: 1004 ExcelTemplate: C:\SMS.xlsx
    Err.Description: Microsoft Excel kann auf die Datei 'C:\SMS.xlsx' nicht zugreifen. Dies kann mehrere Gründe haben:
    Der Name des Dokuments oder der Pfad ist nicht vorhanden.
    Das Dokument wird von einem anderen Programm verwendet.
    Der Name der Arbeitsmappe, die gespeichert werden soll, ist identisch zu dem Namen eines anderen Dokuments, welches schreibgeschützt ist.

    Die Datei SMS.xlsx ist definitiv vorhanden, ich habe es auch in anderen Verzeichnissen versucht (C:\TTT, C:\Users\Public\Programs\CustomerInformation), ich habe ein Verzeichnis freigegeben und es über die Freigabe versucht (\\Computername\FreigabeVerzeichnis\SMS.xlsx) - Ohne Erfolg.
    Starte ich das Programm während ich angemeldet bin (Also mit den gleichen Anmeldeinformationen wie die, mit denen die Aufgabenplanung das Programm startet), funktioniert alles tadellos.

    Ich hoffe, hier kann mir irgendjemand das erklären und mir einen Tipp geben, wie ich das wieder ans Laufen bekommen.

    Vielen Dank für eure Mühe! Wenn noch irgendwelche Informationen fehlen - Reiche ich sofort nach!

    m.f.G. CodyWanKenobi
    Bist du tatsächlich als der Benutzer angemeldet der in der Aufgabenplanung hinterlegt ist oder machst du nur ein "Ausführen als..." zum Test?

    btw: direkt auf C:\ schreiben ist eine ganz schlechte Idee. Als Domänen Admin das Ganze ausführen ist auch Sicherheitstechniches HaraKiri. Ein Funktionsuser mit dedizierten Rechten besser.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Hallo Mr. Trebron,
    ja, ich bin als der Domänen-Admin angemeldet, der auch in der Aufgabenplanung hinterlegt ist - Kein "Ausführen als...".
    Das mit C:\ war auch nur ein Test. Ursprünglich sollte und lag die Excel-Datei hier: C:\Users\Public\Programs\CustomerInformation
    Aber wie gesagt: Egal wo - Sie lässt sich nicht öffnen...
    Das Ganze sicherheitstechnisch im Anschluss runter zu brechen ist sicherlich sinnvoll - Wenn es denn dann erst einmal funktioniert...
    Aktion: "Programm starten"
    Programm/Script: "C:\Users\Public\Programs\ExcelTest\ExcelHandling.exe"
    Keine Argumente, kein "Starten in".
    Aktivierte Sicherheitsoptionen:
    "Unabhängig von der Benutzeranmeldung ausführen"
    "Mit höchsten Prioritäten ausführen" (Wurde ursprünglich auch ohne verwendet - Hat keinen Einfluss auf das Problem.)
    "Ausgeblendet"
    "Konfigurieren für: Windows 10" (Wurde auch mit "Windows 7, Windows Server2008 R2" und "Windows Vista, Windows Server 2008" probiert - Ebenfalls ohne Erfolg...)
    Trigger steht auf Wöchentlich Mo-Fr zu einer festen Uhrzeit. Diese passe ich derzeit für die Tests jedes Mal an bevor ich den Rechner neu starte. Der Trigger funktioniert aber ja grundsätzlich - Das Programm wird ja ausgeführt, da ja die Logdatei geschrieben wird...
    Ich möchte auf @'petaod''s Post in diesem Thread hinweisen.
    Mit EPplus brauchst Du nicht mit Excel (Programm) hantieren. Du brauchst deutlich weniger code und das Programm läuft sehr stabil, ganz im Gegensatz zum Interop Gedöns.

    Ansonsten tippe ich trotzdem auf ein Rechteproblem... Läßt sich das Excel-workbook überhaupt noch von Hand öffnen?
    Hast du als Admin bzw. mit dem User der den Job ausführt mal versucht nach dem Fehlerverhalten Excel als Programm manuell zu öffnen? Da könnte man evtl. auf eine Abfrage stoßen....
    Ja, die Excel-Datei lässt sich manuell problemlos öffnen, auch keinerlei Fehlermeldungen. Und wie gesagt: Sobald ich angemeldet bin und dieselbe Exe starte, die in der Aufgabenplanung eingetragen ist, macht das Programm alles, was es soll.
    OK, ich bin offen für alles Neue. Ich habe gerade mal ein wenig mit dem nuget-Paket experimentiert. Excel-Datei generieren, Arbeitsblatt hinzufügen, das klappt schon, allerdings schaffe ich es nicht, eine existierende Excel-Datei zu öffnen. Gibt es da irgendwo Einsteiger-Literatur und/oder kann mir hier jemand einen Tipp geben?!
    Hast Du mal geprüft, ob der Process nach dem speichern und schließen der Datei noch läuft? Das Problem hatte ich mal mit einem C# Konsolenprogramm, welches eine Excel öffnet und speichert. Beim gefühlten 3. oder 4. Mal gabs den gleichen Fehler bei mir und im TaskManager war Excel noch da.
    Daher hab ich dann eben im Programm den Process abgefragt und falls vorhanden geschlossen, seit dem habe ich ruhe.
    "Hier könnte Ihre Werbung stehen..."
    Guten Morgen zusammen,
    bis zum Speichern und Schliessen komme ich ja gar nicht. Das Problem tritt beim Öffnen ja bereits auf.
    Das Programm wird wie gesagt ohne angemeldeten Benutzer durch die Aufgabenplanung gestartet. Und um ganz sicher zu sein, dass da kein Prozess mehr läuft, starte ich den Rechner derzeit vor jedem Test neu - Da dürfte also nichts mehr laufen...