เหตุใด Excel จึงไม่สามารถเปิดไฟล์เมื่อเรียกใช้จากตัวกำหนดเวลางานได้


14

ฉันเขียนสคริปต์ PowerShell ที่เปิดสมุดงาน Excel และเรียกใช้แมโคร เมื่อฉันเรียกใช้สคริปต์นั้นจากคอนโซล PS หรือแม้กระทั่งจากบรรทัดคำสั่งโดยใช้ powershell.exe script.ps1 ก็ใช้งานได้ เมื่อฉันตั้งค่างานจากตัวกำหนดเวลางาน windows มันจะยกข้อยกเว้นเกี่ยวกับไฟล์ Excel นั้นโดยบอกว่ามันไม่มีอยู่หรือกำลังใช้งานอยู่

ไฟล์มีอยู่อย่างแน่นอนเนื่องจากสคริปต์ทำงานได้ดีจากบรรทัดคำสั่งและฉันมั่นใจว่าไฟล์นี้ไม่ได้ใช้งาน

ฉันพยายามย้ายไฟล์ Excel ไปยังพื้นที่ท้องถิ่นและที่ไม่มีสิทธิพิเศษเพื่อหลีกเลี่ยงปัญหาเครือข่าย / สิทธิ์ผู้ดูแลระบบ งานยังคงทำงานด้วยสิทธิพิเศษสูงสุด เส้นทางไม่มีช่องว่างหรืออักขระพิเศษ

เมื่อฉันพยายามเข้าถึงไฟล์โดยใช้วัตถุระบบไฟล์ไม่มีข้อผิดพลาดแม้เมื่อเรียกใช้จากตัวกำหนดตารางเวลาดังนั้นฉันเดาว่ามันเป็นExcel.Application.Workbooks.Open("..")วิธีเฉพาะ

สิ่งที่ฉันควรพิจารณาตอนนี้?


1
บัญชีผู้ใช้ใดที่ใช้เรียกใช้งานที่กำหนดเวลาไว้
Massimo

ฉันใช้บัญชีผู้ดูแลโดเมนและดูเหมือนว่าจะมีปัญหา การใช้กลุ่มผู้ดูแลโดเมนทำงาน แต่ตอนนี้ฉันต้องค้นหาสาเหตุที่การอนุญาต DCOM Access มีปัญหากับบัญชีผู้ดูแลโดเมน
zrz

TL; DR: วิธีแก้ปัญหาในคำตอบของเอริคเป็นที่มีประสิทธิภาพแต่มันเป็นเรื่องที่ไม่สนับสนุน - ดูบทความสนับสนุนนี้ไมโครซอฟท์ ดีกว่าที่จะมองหาทางเลือกเช่นแพคเกจ nuget DocumentFormat.OpenXml
mklement0

คำตอบ:


9

อาจเป็นปัญหาสิทธิ์ DCOM อัตโนมัติ Excel บางครั้งเต็มไปด้วยอันตราย ...

วิธีเดียวที่ฉันได้พบกับปัญหาเช่นนี้คือการตั้งค่าให้ Excel ทำงานเป็นผู้ใช้เฉพาะผ่านสิทธิ์ DCOM

  1. เปิดบริการคอมโพเนนต์ (เริ่ม -> เรียกใช้พิมพ์ dcomcnfg)
  2. เจาะลึกไปที่บริการคอมโพเนนต์ -> คอมพิวเตอร์ -> คอมพิวเตอร์ของฉันและคลิกที่การกำหนดค่า DCOM
  3. คลิกขวาที่แอปพลิเคชัน Microsoft Excel และเลือกคุณสมบัติ
  4. ในแท็บ Identity ให้เลือกผู้ใช้นี้และป้อน ID และรหัสผ่านของบัญชีผู้ใช้แบบโต้ตอบ (โดเมนหรือท้องถิ่น) แล้วคลิกตกลง

การทำให้เป็นผู้ใช้แบบโต้ตอบหรือการเรียกใช้ไม่สามารถทำงานกับตัวกำหนดเวลางานได้อย่างน่าเสียดายแม้ว่าจะตั้งค่างานให้ทำงานภายใต้บัญชีที่มีสิทธิ์การเข้าถึงของผู้ดูแลระบบ


1
ขอบคุณสำหรับการชี้ให้เห็น dcomcnfg ฉันต้องเพิ่มแอปพลิเคชัน Excel ลงในรีจิสทรีด้วยตนเองเพื่อให้สามารถดูได้ใน dcomcnfg จากนั้นฉันพยายามเปลี่ยนการตั้งค่าข้อมูลประจำตัว แต่ก็ไม่ได้ผล จาก dcomcnfg ฉันดูการอนุญาตการเข้าถึง: ผู้ดูแลโดเมนอยู่ในรายการและมีการเข้าถึงในท้องถิ่นและระยะไกล แต่มีสัญญาณสีแดงเล็กน้อย (กากบาทสีขาวภายในดิสก์สีแดง) เหนือไอคอน ฉันไม่รู้ว่าทำไม แต่อย่างใดมีปัญหากับบัญชีผู้ดูแลโดเมน การเพิ่มบัญชีกลุ่ม Domain Administrators และการเรียกใช้งานจากกลุ่มนั้นเป็นการแก้ปัญหา
zrz

Microsoft ไม่สนับสนุนการทำงานส่วนประกอบสำนักงาน COM ในการประชุมที่ไม่ใช่แบบโต้ตอบ - ดูsupport.microsoft.com/en-us/help/257757/... คำตอบของ ericเป็นวิธีแก้ปัญหาที่มีประสิทธิภาพในปัจจุบัน แต่ก็ไม่ได้รับการสนับสนุน
mklement0

คำตอบนี้สามารถปรับปรุงได้โดยครอบคลุมวิธีการเพิ่มรายการ Microsoft Excel Application เมื่อพวกเขาหายไปจากการกำหนดค่า DCOM ทั้งหมด ดูdocs.microsoft.com/en-us/archive/blogs/…นอกจากนี้ FWIW สิ่งนี้ไม่ได้แก้ปัญหาของฉัน กระบวนการ Excel ยังคงปรากฏในตัวจัดการงาน แต่ไฟล์ที่ระบุไม่เคยเปิด / รัน
TylerH

ในทำนองเดียวกันหลังจากทำการเปลี่ยนแปลงนี้มันทำให้ฉันไม่สามารถเรียกใช้หรือแม้แต่เปิดไฟล์ Excel VBA / ตัวแก้ไข VBA เลยทำให้เกิด CTD เมื่อใดก็ตามที่ฉันพยายาม
TylerH

43

สร้างสองโฟลเดอร์เหล่านี้:

32bit:

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

64bit:

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

Excel ต้องการโฟลเดอร์เหล่านี้หากไม่สามารถทำงานได้แบบโต้ตอบ สร้างทั้งสองโฟลเดอร์แม้ว่าคุณใช้ระบบปฏิบัติการ 64 บิต


3
ฉันต้องการเพิ่มในที่ Microsoft ไม่รับรองการใช้งานองค์ประกอบ Office ใด ๆ ที่ไม่โต้ตอบ แต่เป็นไปได้ที่จะหลีกเลี่ยงมันในหลาย ๆ กรณี
flindeberg

9
นี่เป็นเวทย์มนตร์ดำที่จริงจัง ฉันไม่รู้ว่าอะไรน่ากลัว - Excel ต้องการโฟลเดอร์นี้ในสถานการณ์นี้หรือมีคนรู้ว่า Excel ต้องการโฟลเดอร์นี้ในสถานการณ์นี้
Rich C

1
เพื่อเน้น @ flindeberg ของจุด: วิธีแก้ปัญหานี้เป็นที่มีประสิทธิภาพแต่มันเป็นเรื่องที่ไม่สนับสนุน - ดูบทความสนับสนุนนี้ไมโครซอฟท์
mklement0

การสร้างโฟลเดอร์เหล่านี้และกำหนด Full Control สำหรับบัญชีของฉัน (ซึ่งเป็นบัญชีที่ใช้งานตามกำหนดเวลาเช่นกัน) ตลอดจาก system32 / SysWOW64 ไปยังโฟลเดอร์ Desktop ยังไม่สามารถใช้งานได้
TylerH

2

เมื่อตั้งค่าการอนุญาต DCOM ถ้า Microsoft Excel ไม่ปรากฏขึ้นdcomcnfgให้ลองmmc comexp.msc /32

การอ้างอิง


นี่ทำให้ DCOM Config เปิดให้ฉันและถามฉันว่าฉันต้องการลงทะเบียนรายการสองสามรายการหรือไม่ แต่ Excel ไม่ได้อยู่ในรายการเหล่านั้น
TylerH
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.