อัพเดท:
หลังจากที่รายละเอียดทั้งหมดสรุปและพูดคุยกันผมใช้เวลา 2 ชั่วโมงเป็นธรรมในการตรวจสอบตัวเลือกและการปรับปรุงนี้คือการจุดทั้งหมดi
s
การเตรียมการ
ก่อนอื่นฉันได้ทำการติดตั้ง Office 2010 x86 แบบใหม่ทั้งหมดบนเครื่องเสมือน Clean Win7 SP1 Ultimate x64 ที่ขับเคลื่อนโดย VMWare (นี่เป็นกิจวัตรปกติสำหรับงานทดสอบประจำวันของฉันดังนั้นฉันจึงมีการปรับใช้หลายอย่าง)
จากนั้นฉันเปลี่ยนเฉพาะตัวเลือก Excel ต่อไปนี้ (กล่าวคือตัวเลือกอื่น ๆ ทั้งหมดจะเหลืออยู่หลังการติดตั้ง):
Advanced > General > Ask to update automatic links
ตรวจสอบ :
Trust Center > Trust Center Settings... > External Content > Enable All...
(แม้ว่าสิ่งที่เกี่ยวข้องกับการเชื่อมต่อข้อมูลมักไม่สำคัญสำหรับกรณีนี้):
เงื่อนไขเบื้องต้น
ฉันเตรียมและวางลงในC:\
สมุดงานตรงตาม@Siddharth Rout
คำแนะนำในคำตอบที่อัปเดตของเขา (แชร์เพื่อความสะดวกของคุณ): https://www.dropbox.com/s/mv88vyc27eljqaq/Book1withLinkToBook2.xlsxหนังสือที่เชื่อมโยงจึงถูกลบออกดังนั้นลิงก์ในแชร์ หนังสือไม่พร้อมใช้งาน (แน่นอน)
การเปิดด้วยตนเอง
ไฟล์ที่แชร์ด้านบนแสดงเมื่อเปิด (มีตัวเลือก Excel ในรายการด้านบน) คำเตือน 2 รายการ - ตามลำดับที่ปรากฏ:
คำเตือน # 1
หลังจากคลิกที่Update
ฉันคาดว่าจะได้รับอีก:
คำเตือน # 2
ดังนั้นฉันคิดว่าสภาพแวดล้อมการทดสอบของฉันตอนนี้ค่อนข้างคล้ายกับOP
's) จนถึงตอนนี้ดีมากในที่สุดเราก็ไปที่
การเปิด VBA
ตอนนี้ฉันจะลองตัวเลือกที่เป็นไปได้ทั้งหมดทีละขั้นตอนเพื่อให้ภาพชัดเจน ฉันจะแชร์เฉพาะบรรทัดของโค้ดที่เกี่ยวข้องเพื่อความเรียบง่าย (ไฟล์ตัวอย่างที่สมบูรณ์พร้อมโค้ดจะถูกแชร์ในตอนท้าย)
1. แอปพลิเคชั่นง่ายๆสมุดงานเปิด
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
ไม่แปลกใจ - สิ่งนี้ก่อให้เกิดคำเตือนทั้งสองแบบเช่นเดียวกับการเปิดด้วยตนเองด้านบน
2. Application.DisplayAlerts = เท็จ
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
รหัสนี้จบลงด้วยคำเตือน # 1และตัวเลือกอย่างใดอย่างหนึ่งคลิก ( Update
/ Don't Update
) ผลิตคำเตือนต่อไปไม่คือApplication.DisplayAlerts = False
ไม่ใส่คำเตือน # 2
3. Application.AskToUpdateLinks = False
Application.AskToUpdateLinks = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.AskToUpdateLinks = True
ตรงข้ามกับDisplayAlerts
รหัสนี้จบลงด้วยคำเตือน # 2เท่านั้นคือApplication.AskToUpdateLinks = False
ไม่ใส่คำเตือน # 1
4. ดับเบิ้ลเท็จ
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True
เห็นได้ชัดว่ารหัสนี้จบลงด้วยการปราบปรามคำเตือนทั้งสอง
5. UpdateLinks: = เท็จ
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx", UpdateLinks:=False
สุดท้ายนี้โซลูชัน 1 บรรทัด (เสนอโดยเดิม@brettdj
) ทำงานในลักษณะเดียวกับ Double False: ไม่มีคำเตือนปรากฏขึ้น!
ข้อสรุป
ยกเว้นการทดสอบที่ดีและกรณีแก้ไขที่สำคัญมาก (ฉันอาจประสบปัญหาดังกล่าวทุกวันในขณะที่ส่งสมุดงานของฉันไปยังบุคคลที่สามและตอนนี้ฉันเตรียมพร้อมแล้ว) เรียนรู้อีก 2 สิ่ง:
- ตัวเลือกของ Excel ไม่ว่าจะเป็นเวอร์ชันใดก็ตามโดยเฉพาะอย่างยิ่งเมื่อเราใช้โซลูชัน VBA
- ทุกปัญหามีวิธีแก้ปัญหาที่สั้นและสวยงาม - ร่วมกับปัญหาที่ไม่ชัดเจนและซับซ้อน อีกหนึ่งข้อพิสูจน์!)
ขอบคุณมากสำหรับทุกคนที่มีส่วนร่วมในการแก้ปัญหาและโดยเฉพาะ OP ที่ตั้งคำถาม หวังว่าการตรวจสอบของฉันและขั้นตอนการทดสอบที่อธิบายไว้อย่างละเอียดจะเป็นประโยชน์ไม่เพียง แต่สำหรับฉัน)
มีการแชร์ไฟล์ตัวอย่างที่มีตัวอย่างโค้ดด้านบน (หลายบรรทัดแสดงความคิดเห็นโดยเจตนา): https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm
คำตอบเดิม (ทดสอบสำหรับExcel 2007พร้อมตัวเลือกบางอย่าง):
รหัสนี้ใช้งานได้ดีสำหรับฉัน - มันวนซ้ำผ่านไฟล์ Excel ทั้งหมดที่ระบุโดยใช้สัญลักษณ์แทนในInputFolder
:
Sub WorkbookOpening2007()
Dim InputFolder As String
Dim LoopFileNameExt As String
InputFolder = "D:\DOCUMENTS\" 'Trailing "\" is required!
LoopFileNameExt = Dir(InputFolder & "*.xls?")
Do While LoopFileNameExt <> ""
Application.DisplayAlerts = False
Application.Workbooks.Open (InputFolder & LoopFileNameExt)
Application.DisplayAlerts = True
LoopFileNameExt = Dir
Loop
End Sub
ฉันลองใช้กับหนังสือที่มีลิงก์ภายนอกที่ใช้งานไม่ได้ - ไม่มีคำเตือน
ไฟล์ตัวอย่าง: https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm