CẬP NHẬT:
Sau khi tất cả các chi tiết được tóm tắt và thảo luận, tôi đã dành 2 giờ công bằng để kiểm tra các tùy chọn và bản cập nhật này là để chấm tất cả các i
s.
Chuẩn bị
Trước hết, tôi đã thực hiện cài đặt Office 2010 x86 sạch trên máy ảo Clean Win7 SP1 Ultimate x64 được hỗ trợ bởi VMWare (đây là thói quen thông thường cho các tác vụ thử nghiệm hàng ngày của tôi, vì vậy tôi đã triển khai nhiều công việc trong số đó).
Sau đó, tôi chỉ thay đổi các tùy chọn Excel sau (nghĩa là tất cả các tùy chọn khác được giữ nguyên sau khi cài đặt):
Advanced > General > Ask to update automatic links
đã kiểm tra :
Trust Center > Trust Center Settings... > External Content > Enable All...
(mặc dù cái liên quan đến Kết nối dữ liệu rất có thể không quan trọng đối với trường hợp này):
Điều kiện tiên quyết
Tôi đã chuẩn bị và đặt vào C:\
một sổ làm việc chính xác theo @Siddharth Rout
gợi ý trong câu trả lời cập nhật của anh ấy (được chia sẻ để thuận tiện cho bạn): https://www.dropbox.com/s/mv88vyc27eljqaq/Book1withLinkToBook2.xlsx Sách được liên kết sau đó đã bị xóa vì vậy liên kết đó trong phần được chia sẻ sách không có sẵn (chắc chắn).
Mở thủ công
Tệp được chia sẻ ở trên hiển thị khi mở (có các tùy chọn Excel được liệt kê ở trên) 2 cảnh báo - theo thứ tự xuất hiện:
CẢNH BÁO # 1
Sau khi nhấp vào Update
tôi mong đợi nhận được một:
CẢNH BÁO # 2
Vì vậy, tôi cho rằng môi trường thử nghiệm của tôi bây giờ khá giống với OP
's) Cho đến nay rất tốt, cuối cùng chúng tôi đã đi đến
Khai mạc VBA
Bây giờ tôi sẽ thử tất cả các tùy chọn có thể từng bước để làm cho bức tranh rõ ràng. Tôi sẽ chỉ chia sẻ các dòng mã có liên quan để đơn giản hơn (tệp mẫu hoàn chỉnh với mã sẽ được chia sẻ cuối cùng).
1. Ứng dụng đơn giản.Workbooks.Open
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Không có gì ngạc nhiên - điều này tạo ra cảnh báo CẢ HAI, như đối với việc mở bằng tay ở trên.
2. Ứng dụng.DisplayAlerts = Sai
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Mã này kết thúc bằng CẢNH BÁO # 1 và một trong hai tùy chọn được nhấp ( Update
/ Don't Update
) sẽ KHÔNG tạo ra cảnh báo nào khác, tức là sẽ Application.DisplayAlerts = False
loại bỏ CẢNH BÁO # 2 .
3. Application.AskToUpdateLinks = Sai
Application.AskToUpdateLinks = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.AskToUpdateLinks = True
Ngược lại DisplayAlerts
, mã này chỉ kết thúc với CẢNH BÁO # 2 , tức là Application.AskToUpdateLinks = False
loại bỏ CẢNH BÁO # 1 .
4. Sai kép
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True
Rõ ràng, mã này kết thúc với việc loại bỏ CẢ CẢNH BÁO .
5. UpdateLinks: = Sai
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx", UpdateLinks:=False
Cuối cùng, giải pháp 1 dòng này (được đề xuất ban đầu @brettdj
) hoạt động giống như Double False: KHÔNG CÓ CẢNH BÁO nào được hiển thị!
Kết luận
Ngoại trừ một thực tiễn thử nghiệm tốt và trường hợp đã giải quyết rất quan trọng (tôi có thể gặp phải những vấn đề như vậy hàng ngày khi gửi sổ làm việc của mình cho bên thứ ba và bây giờ tôi đã chuẩn bị sẵn sàng), 2 điều nữa đã học được:
- Tùy chọn Excel CÓ vấn đề, bất kể phiên bản - đặc biệt là khi chúng ta đến với các giải pháp VBA.
- Mọi rắc rối đều có giải pháp ngắn gọn và thanh lịch - cùng với giải pháp không rõ ràng và phức tạp. Chỉ một bằng chứng nữa cho điều đó!)
Rất cảm ơn tất cả những người đã đóng góp cho giải pháp, và đặc biệt là OP đã đưa ra câu hỏi. Hy vọng điều tra của tôi và các bước thử nghiệm được mô tả kỹ lưỡng không chỉ hữu ích cho tôi)
File mẫu với các mẫu code trên được chia sẻ (nhiều dòng được comment cố ý): https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm
Câu trả lời gốc (được thử nghiệm cho Excel 2007 với các tùy chọn nhất định):
Mã này hoạt động tốt đối với tôi - nó lặp qua TẤT CẢ các tệp Excel được chỉ định bằng ký tự đại diện trong 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
Tôi đã thử nó với những cuốn sách có liên kết bên ngoài không khả dụng - không có cảnh báo.
Tệp mẫu: https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm