Tại sao Excel không thể mở tệp khi chạy từ trình lập lịch tác vụ?


14

Tôi đã viết một tập lệnh PowerShell để mở một bảng tính excel và chạy một macro. Khi tôi chạy tập lệnh đó từ bảng điều khiển PS, hoặc thậm chí từ dòng lệnh bằng powershell.exe script.ps1, nó chỉ hoạt động. Khi tôi thiết lập một tác vụ từ trình lập lịch tác vụ của windows, nó sẽ phát sinh một ngoại lệ về tệp Excel đó, nói rằng nó không tồn tại hoặc đã được sử dụng.

Tệp tồn tại chắc chắn, vì tập lệnh chạy tốt từ dòng lệnh và tôi khẳng định nó không được sử dụng.

Tôi đã cố gắng di chuyển tệp Excel đến một khu vực địa phương và không có đặc quyền, để tránh các vấn đề đặc quyền tin cậy / quản trị mạng. Nhiệm vụ vẫn chạy với các đặc quyền cao nhất. Đường dẫn không có khoảng trắng, hoặc ký tự đặc biệt.

Khi tôi cố gắng truy cập vào tệp bằng đối tượng Hệ thống tệp, không có lỗi ngay cả khi chạy từ trình lập lịch biểu, vì vậy tôi đoán nó là đặc trưng cho Excel.Application.Workbooks.Open("..")phương thức.

Tôi nên xem xét gì bây giờ?


1
Tài khoản người dùng nào được sử dụng để chạy tác vụ theo lịch trình?
Massimo

Tôi đã sử dụng tài khoản quản trị viên tên miền và dường như đó là vấn đề. Sử dụng nhóm quản trị viên tên miền làm việc. Nhưng bây giờ tôi phải tìm lý do tại sao ủy quyền truy cập DCOM có vấn đề với tài khoản quản trị viên tên miền.
zrz

tl; dr: Cách giải quyết trong câu trả lời của erichiệu quả , nhưng nó không được hỗ trợ - xem bài viết hỗ trợ này của Microsoft . Tốt hơn để tìm kiếm các lựa chọn thay thế như gói nuget DocumentFormat.OpenXml .
mkuity0

Câu trả lời:


8

Đây có thể là một vấn đề quyền DCOM. Tự động hóa Excel đôi khi đầy rủi ro ...

Cách duy nhất tôi tìm thấy xung quanh các vấn đề như thế này là đặt Excel chạy như một người dùng cụ thể thông qua các quyền DCOM.

  1. Dịch vụ thành phần mở (Bắt đầu -> Chạy, nhập dcomcnfg)
  2. Xem chi tiết về Dịch vụ thành phần -> Máy tính -> Máy tính của tôi và nhấp vào Cấu hình DCOM
  3. Nhấp chuột phải vào Ứng dụng Microsoft Excel và chọn Thuộc tính
  4. Trong tab Danh tính, chọn Người dùng này và nhập ID và mật khẩu của tài khoản người dùng tương tác (tên miền hoặc cục bộ) và nhấp vào Ok

Không may giữ nó là người dùng tương tác hoặc khởi chạy không hoạt động với bộ lập lịch tác vụ, ngay cả khi thiết lập tác vụ để chạy trong tài khoản có quyền truy cập quản trị viên vào máy.


1
Cảm ơn đã chỉ ra dcomcnfg. Tôi đã phải tự thêm Ứng dụng Excel vào Sổ đăng ký để có thể thấy nó vào dcomcnfg, sau đó tôi đã cố gắng thay đổi cài đặt nhận dạng nhưng nó cũng không hoạt động. Từ dcomcnfg, tôi đã xem xét Quyền truy cập: Quản trị viên tên miền có trong danh sách và có quyền truy cập từ xa và cục bộ, nhưng có một dấu hiệu nhỏ màu đỏ (chữ thập màu trắng trong một đĩa màu đỏ) trên biểu tượng của nó. Tôi không biết tại sao nhưng bằng cách nào đó có vấn đề với tài khoản Quản trị viên tên miền. Thêm tài khoản nhóm Quản trị viên tên miền và chạy tác vụ từ nhóm đó là một cách giải quyết.
zrz

Microsoft không hỗ trợ chạy các thành phần Office COM trong các phiên không tương tác - xem support.microsoft.com/en-us/help/257757/ . Câu trả lời của eric là một cách giải quyết hiện tại hiệu quả, nhưng nó không được hỗ trợ.
mkuity0

Câu trả lời này có thể được cải thiện bằng cách trình bày cách thêm các mục nhập Ứng dụng Microsoft Excel khi chúng bị thiếu hoàn toàn khỏi Cấu hình DCOM. Xem docs.microsoft.com/en-us/archive/bloss/ cũng Ngoài ra, FWIW, điều này không giải quyết được vấn đề của tôi. Một quy trình Excel vẫn xuất hiện trong Trình quản lý tác vụ, nhưng tệp được chỉ định không bao giờ mở / chạy.
TylerH

Tương tự như vậy sau khi thực hiện thay đổi này, nó đã ngăn tôi chạy hoặc thậm chí mở các tệp VBA Excel / trình soạn thảo VBA, gây ra CTD bất cứ khi nào tôi thử.
TylerH

42

Tạo hai thư mục này:

32 bit:

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

64 bit:

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

Excel cần các thư mục này nếu nó không chạy tương tác. Tạo cả hai thư mục ngay cả khi bạn đang sử dụng HĐH 64 bit.


3
Tôi chỉ muốn nói thêm rằng Microsoft không xác nhận việc chạy bất kỳ thành phần Office nào không tương tác, nhưng có thể khắc phục được trong nhiều trường hợp.
flindeberg

8
Đây là một số ma thuật đen nghiêm trọng. Tôi không biết điều gì đáng sợ hơn - rằng Excel cần thư mục này trong kịch bản này hoặc ai đó biết rằng Excel cần thư mục này trong kịch bản này.
Giàu C

1
Để nhấn mạnh quan điểm của @ flindeberg: Cách giải quyết này có hiệu quả , nhưng nó không được hỗ trợ - xem bài viết hỗ trợ này của Microsoft .
mkuity0

Tạo các thư mục này và gán Full Control cho tài khoản của tôi (cũng là tài khoản đang chạy tác vụ theo lịch trình) suốt từ system32 / SysWOW64 đến các thư mục Desktop vẫn không hoạt động với tôi.
TylerH

2

Khi đặt quyền DCOM, nếu Microsoft Excel không xuất hiện trong dcomcnfgthửmmc comexp.msc /32

tài liệu tham khảo


Điều này khiến DCOM Config mở cho tôi và hỏi tôi có muốn đăng ký một vài mục không, nhưng Excel không nằm trong số đó.
TylerH
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.