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
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