Mengapa Excel tidak bisa membuka file saat dijalankan dari penjadwal tugas?

14

Saya menulis skrip PowerShell yang membuka buku kerja excel dan menjalankan makro. Ketika saya menjalankan skrip itu dari konsol PS, atau bahkan dari baris perintah menggunakan powershell.exe script.ps1, itu hanya berfungsi. Ketika saya mengatur tugas dari Windows Task Scheduler, ia memunculkan pengecualian tentang file Excel itu, mengatakan bahwa itu tidak ada atau sudah digunakan.

File ada pasti, karena skrip berjalan dengan baik dari baris perintah, dan saya yakin itu tidak digunakan.

Saya mencoba untuk memindahkan file Excel ke area lokal dan non-privilege, untuk menghindari masalah kepercayaan jaringan / admin privilege. Tugas masih berjalan dengan hak istimewa tertinggi. Jalan tidak memiliki spasi, atau karakter khusus.

Ketika saya mencoba mengakses file menggunakan objek sistem File, tidak ada kesalahan bahkan ketika dijalankan dari scheduler, jadi saya kira itu khusus untuk Excel.Application.Workbooks.Open("..")metode.

Apa yang harus saya pertimbangkan sekarang?

zrz
sumber
1
Akun pengguna apa yang digunakan untuk menjalankan tugas yang dijadwalkan?
Massimo
Saya menggunakan akun administrator domain, dan sepertinya itulah masalahnya. Menggunakan grup administrator domain berfungsi. Tetapi sekarang saya harus menemukan mengapa otorisasi Akses DCOM memiliki masalah dengan akun administrator domain.
zrz
tl; dr: Solusi di jawaban eric ini adalah efektif , tetapi tidak didukung - lihat artikel ini mendukung Microsoft . Lebih baik mencari alternatif seperti paket nuget DocumentFormat.OpenXml .
mklement0

Jawaban:

8

Kemungkinan masalah izin DCOM. Mengotomasi Excel terkadang penuh dengan ...

Satu-satunya cara saya menemukan masalah seperti ini adalah mengatur Excel agar dijalankan sebagai pengguna tertentu melalui izin DCOM.

  1. Buka Layanan Komponen (Mulai -> Jalankan, ketik dcomcnfg)
  2. Telusuri ke Layanan Komponen -> Komputer -> Komputer Saya dan klik pada DCOM Config
  3. Klik kanan pada Aplikasi Microsoft Excel dan pilih Properti
  4. Pada tab Identity pilih Pengguna Ini dan masukkan ID dan kata sandi dari akun pengguna interaktif (domain atau lokal) dan klik Ok

Menyimpannya sebagai pengguna interaktif atau peluncuran tidak berfungsi dengan penjadwal tugas sayangnya, bahkan ketika mengatur tugas untuk dijalankan di bawah akun yang memiliki akses admin ke mesin.

squillman
sumber
1
Terima kasih telah menunjukkan dcomcnfg. Saya harus secara manual menambahkan Aplikasi Excel ke dalam Registry untuk dapat melihatnya di dcomcnfg, kemudian saya mencoba mengubah pengaturan identitas tetapi tidak berhasil juga. Dari dcomcnfg, saya melihat ke Akses Otorisasi: Administrator Domain ada di daftar dan memiliki akses lokal dan jarak jauh, tetapi ada tanda merah kecil (salib putih dalam disk merah) di atas ikonnya. Saya tidak tahu mengapa tetapi entah bagaimana ada masalah dengan akun Administrator Domain. Menambahkan akun grup Administrator Domain dan menjalankan tugas dari grup itu adalah solusinya.
zrz
Microsoft tidak mendukung menjalankan komponen Office COM dalam sesi non-interaktif - lihat support.microsoft.com/en-us/help/257757/… . Jawaban eric adalah solusi yang saat ini efektif, tetapi tidak didukung.
mklement0
Jawaban ini dapat ditingkatkan dengan mencakup bagaimana cara menambahkan entri Aplikasi Microsoft Excel ketika semuanya hilang dari DCOM Config sepenuhnya. Lihat docs.microsoft.com/en-us/archive/blogs/... Juga, FWIW, ini tidak menyelesaikan masalah saya. Proses Excel masih muncul di Task Manager, tetapi file yang ditentukan tidak pernah membuka / menjalankan.
TylerH
Demikian juga setelah melakukan perubahan ini mencegah saya dari menjalankan atau bahkan membuka file Excel VBA / editor VBA sama sekali, menyebabkan CTD setiap kali saya mencobanya.
TylerH
42

Buat dua folder ini:

32Bit:

C:\Windows\System32\config\systemprofile\Desktop  

64Bit:

C:\Windows\SysWOW64\config\systemprofile\Desktop

Excel membutuhkan folder ini jika tidak dijalankan secara interaktif. Buat kedua folder bahkan jika Anda menggunakan OS 64-bit.

eric
sumber
3
Saya hanya ingin menambahkan bahwa Microsoft tidak menganjurkan menjalankan komponen Office apa pun secara non-interaktif, tetapi dimungkinkan untuk menyiasatinya dalam banyak kasus.
flindeberg
8
Ini adalah sihir hitam yang serius. Saya tidak tahu apa yang lebih menyeramkan - bahwa Excel membutuhkan folder ini dalam skenario ini atau seseorang mengetahui bahwa Excel membutuhkan folder ini dalam skenario ini.
Rich C
1
Untuk menekankan poin @ flindeberg: Solusi ini efektif , tetapi tidak didukung - lihat artikel dukungan Microsoft ini .
mklement0
Membuat folder ini dan menetapkan Kontrol Penuh untuk akun saya (yang merupakan akun menjalankan tugas yang dijadwalkan juga) sepanjang jalan dari system32 / SysWOW64 ke folder Desktop masih tidak bekerja untuk saya.
TylerH
2

Saat mengatur izin DCOM, jika Microsoft Excel tidak muncul di dcomcnfgcobammc comexp.msc /32

referensi

cmo
sumber
Ini menyebabkan DCOM Config terbuka untuk saya dan bertanya apakah saya ingin mendaftarkan beberapa entri, tetapi Excel tidak ada di antara mereka.
TylerH