Napisałem skrypt PowerShell, który otwiera skoroszyt programu Excel i uruchamia makro. Kiedy uruchamiam ten skrypt z konsoli PS, a nawet z wiersza poleceń za pomocą powershell.exe script.ps1, to po prostu działa. Kiedy konfiguruję zadanie z harmonogramu zadań systemu Windows, pojawia się wyjątek dotyczący tego pliku Excel, mówiąc, że albo nie istnieje, albo jest już używany.
Plik istnieje na pewno, ponieważ skrypt działał poprawnie z linii poleceń i jestem pewien, że nie jest używany.
Próbowałem przenieść plik Excel do lokalnego i nieuprzywilejowanego obszaru, aby uniknąć problemów z zaufaniem sieciowym / uprawnieniami administratora. Zadanie nadal działa z najwyższymi uprawnieniami. Na ścieżce nie ma spacji ani znaków specjalnych.
Kiedy próbuję uzyskać dostęp do pliku za pomocą obiektu systemu plików, nie ma błędów, nawet gdy uruchamiany jest z harmonogramu, więc myślę, że jest on specyficzny dla Excel.Application.Workbooks.Open("..")
metody.
Co powinienem teraz rozważyć?
Odpowiedzi:
Prawdopodobnie jest to problem z uprawnieniami DCOM. Automatyzacja programu Excel jest czasem pełna niebezpieczeństw ...
Jedynym sposobem, w jaki znalazłem takie problemy, jest skonfigurowanie programu Excel do uruchamiania jako określonego użytkownika za pomocą uprawnień DCOM.
Utrzymywanie go jako użytkownika interaktywnego lub uruchamiania nie działa niestety z harmonogramem zadań, nawet przy ustawianiu zadania do uruchomienia na koncie, które ma dostęp administratora do komputera.
źródło
Utwórz te dwa foldery:
32Bit:
64Bit:
Excel potrzebuje tych folderów, jeśli nie jest uruchamiany interaktywnie. Utwórz oba foldery, nawet jeśli masz 64-bitowy system operacyjny.
źródło
Podczas ustawiania uprawnień DCOM, jeśli program Microsoft Excel nie pojawia się podczas
dcomcnfg
próbymmc comexp.msc /32
odniesienie
źródło