Görev zamanlayıcıdan çalıştırıldığında Excel neden bir dosyayı açamıyor?


14

Excel çalışma kitabını açan ve makro çalıştıran bir PowerShell betiği yazdım. Bu komut dosyasını PS konsolundan, hatta powershell.exe script.ps1 kullanarak komut satırından çalıştırdığımda, sadece çalışır. Windows görev zamanlayıcısından bir görev ayarladığımda, bu Excel dosyası hakkında varolmayan veya zaten kullanımda olduğunu belirten bir istisna oluşturur.

Komut dosyası komut satırından iyi çalıştığı için dosya kesin olarak var ve kullanımda olmadığından eminim.

Ağ güven / yönetici ayrıcalık sorunlarını önlemek için Excel dosyasını yerel ve ayrıcalıklı olmayan bir alana taşımaya çalıştım. Görev hala en yüksek ayrıcalıklarla çalışır. Yolda boşluk veya özel karakterler yok.

Dosya sistemi nesnesi kullanarak dosyaya erişmeye çalıştığımda, zamanlayıcıdan çalıştırıldığında bile hata yok, bu yüzden Excel.Application.Workbooks.Open("..")yönteme özgü olduğunu tahmin ediyorum .

Şimdi nelere dikkat etmeliyim?


1
Zamanlanmış görevi çalıştırmak için hangi kullanıcı hesabı kullanılır?
Massimo

Alan adı yöneticisi hesabını kullandım ve sorun gibi görünüyordu. Etki alanı yöneticileri grubunu kullanarak çalıştı. Ancak şimdi DCOM Erişimi yetkilendirmesinin neden etki alanı yöneticisi hesabıyla ilgili bir sorunu olduğunu bulmak zorundaydım.
zrz

tl; dr: Geçici çözüm Eric'in cevap olduğunu etkili , ama öyle desteksiz - bakınız bu Microsoft destek makalesine . DocumentFormat.OpenXml nuget paketi gibi alternatifleri aramak daha iyidir .
mklement0

Yanıtlar:


9

Muhtemelen bir DCOM izinleri sorunudur. Excel'in otomatikleştirilmesi bazen tehlikeyle doludur ...

Bunun gibi konularda bulduğum tek yol, Excel'i DCOM izinleri aracılığıyla belirli bir kullanıcı olarak çalışacak şekilde ayarlamaktır.

  1. Bileşen Hizmetlerini açın (Başlat -> Çalıştır, dcomcnfg yazın)
  2. Bileşen Hizmetleri -> Bilgisayarlar -> Bilgisayarım'a gidin ve DCOM Yapılandırması'na tıklayın.
  3. Microsoft Excel Uygulaması'na sağ tıklayın ve Özellikler'i seçin
  4. Kimlik sekmesinde Bu Kullanıcı'yı seçin ve etkileşimli kullanıcı hesabının (etki alanı veya yerel) kimliğini ve parolasını girin ve Tamam'ı tıklayın.

Görevi makineye yönetici erişimi olan bir hesap altında çalışacak şekilde ayarlasanız bile, etkileşimli kullanıcı veya başlatma olarak tutmak maalesef görev zamanlayıcı ile çalışmaz.


1
Dcomcnfg'yi işaret ettiğiniz için teşekkür ederiz. El ile dcomcnfg içine görmek için Excel uygulaması kayıt defterine eklemek zorunda kaldı, sonra kimlik ayarlarını değiştirmeye çalıştım ama o da işe yaramadı. Dcomcnfg'den Erişim Yetkilendirmesi'ne baktım: Alan Adı Yöneticisi listede ve yerel ve uzaktan erişime sahipti, ancak simgesinin üzerinde küçük bir kırmızı işaret (kırmızı diskte beyaz çarpı işareti) vardı. Neden olduğu hakkında hiçbir fikrim yok ama bir şekilde Domain Administrator hesabıyla ilgili bir sorun var. Etki Alanı Yöneticileri grup hesabını eklemek ve görevi bu gruptan çalıştırmak geçici bir çözümdür.
zrz

Microsoft, etkileşimli olmayan oturumlarda Office COM bileşenlerinin çalıştırılmasını desteklemez - bkz. Support.microsoft.com/en-us/help/257757/… . eric'in yanıtı şu anda etkili bir çözümdür , ancak desteklenmemektedir.
mklement0

Bu yanıt, DCOM Config'ten tamamen yokken Microsoft Excel Uygulama girişlerinin nasıl ekleneceğini kapsayarak geliştirilebilir. Bkz. Docs.microsoft.com/en-us/archive/blogs/… Ayrıca, FWIW, bu sorunumu çözmedi. Görev Yöneticisi'nde hala bir Excel işlemi görünüyor, ancak belirtilen dosya hiçbir zaman açılmıyor / çalışmıyor.
TylerH

Aynı şekilde bu değişikliği yaptıktan sonra Excel VBA dosyalarını / VBA editörünü çalıştırmamı ve açmamı engelledi ve her denediğimde CTD'lere neden oldu.
TylerH

43

Bu iki klasörü oluşturun:

32Bit:

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

64Bit:

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

Etkileşimli olarak çalışmazsa Excel'in bu klasörlere ihtiyacı vardır. 64 bit işletim sisteminde olsanız bile her iki klasörü de oluşturun.


3
Sadece Microsoft'un herhangi bir Office bileşenini etkileşimli olmayan bir şekilde çalıştırmayı desteklemediğini eklemek istiyorum, ancak birçok durumda etrafta dolaşmak mümkündür.
flindeberg

9
Bu ciddi bir kara büyü. Ne korkunç olduğunu bilmiyorum - Excel'in bu senaryoda bu klasöre ihtiyacı olduğunu veya birinin bu senaryoda Excel'in bu klasöre ihtiyaç duyduğunu bildiğini bilmiyorum.
Zengin C

1
@ Flindeberg'in konusunu vurgulamak için: Bu geçici çözüm etkilidir , ancak desteklenmez - bu Microsoft destek makalesine bakın .
mklement0

Bu klasörleri oluşturma ve hesabım için Tam Denetim atama (ki bu da zamanlanan görevi çalıştıran hesap) system32 / SysWOW64'ten Desktop klasörlerine kadar hala benim için çalışmadı.
TylerH

2

DCOM izinlerini ayarlarken, Microsoft Excel dcomcnfgdenemede görünmüyorsammc comexp.msc /32

referans


Bu, DCOM Config'in benim için açılmasına neden oldu ve birkaç giriş kaydetmek isteyip istemediğimi sordu, ancak Excel bunlar arasında değildi.
TylerH
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.