Tạo file excel đóng tất cả các workbook đang mở bằng VBA

Liên hệ QC

ads_ads

Thành viên mới
Tham gia
15/1/13
Bài viết
21
Được thích
5
Em muốn tạo một file excel mà khi em mở nó ra thì tất cả các file excel đang mở khác tự động save và đóng lại, màn hình chỉ hiện mỗi file em mở thôi.

Các anh giúp em tạo đoạn code VBA đó được không ạ? Em xin cảm ơn trước.
 
Cuối cùng em cũng mò được trên mạng, em xin chia sẻ nếu ai thấy cần }}}}}

Sub Auto_Open()'This sub will close all workbooks
'except the workbook in which the code is located.
'Thanks to http://support.microsoft.com/kb/147742
Dim WkbkName As Object
On Error GoTo Close_Error
Application.ScreenUpdating = False
For Each WkbkName In Application.Workbooks()
If WkbkName.Name <> ThisWorkbook.Name Then WkbkName.Close
Next
'If everything runs all right, exit the sub.
Exit Sub
'Error handler.
Close_Error:
MsgBox Str(Err) & " " & Error()
Resume Next
End Sub
 
Upvote 0
Cuối cùng em cũng mò được trên mạng, em xin chia sẻ nếu ai thấy cần }}}}}

Dám cá với bạn code này không ăn thua. Nó sẽ chẳng đóng được những file excel mở trên các session khác nhau
Ví dụ thay vì người ta double click vào biểu tượng file để mở file thì người ta lại làm khác:
- Khởi động Excel (từ Start menu\Program)
- Xong, bấm Open để mở 1 file Excel
- Tiếp theo lại khởi động Excel lần nữa rồi lại bấm Open để mở file khác
- Với 2 lần Open như vậy thì 2 file Excel trên sẽ được xem là nằm trên 2 session khác nhau
- Bây giờ, nếu ta khởi động Excel, bấm Open để mở file đang chứa code thì chắc chắn rằng code của ta không biết có sự tồn tại của 2 file Excel đã mở trước đó
-------------
Bạn thí nghiệm sẽ biết
 
Upvote 0
Dám cá với bạn code này không ăn thua. Nó sẽ chẳng đóng được những file excel mở trên các session khác nhau
Ví dụ thay vì người ta double click vào biểu tượng file để mở file thì người ta lại làm khác:
- Khởi động Excel (từ Start menu\Program)
- Xong, bấm Open để mở 1 file Excel
- Tiếp theo lại khởi động Excel lần nữa rồi lại bấm Open để mở file khác
- Với 2 lần Open như vậy thì 2 file Excel trên sẽ được xem là nằm trên 2 session khác nhau
- Bây giờ, nếu ta khởi động Excel, bấm Open để mở file đang chứa code thì chắc chắn rằng code của ta không biết có sự tồn tại của 2 file Excel đã mở trước đó
-------------
Bạn thí nghiệm sẽ biết

E đã test theo cách của anh và thấy đúng. Nhưng khổ nỗi cái file excel cùi của em nó cứ lỗi lung tung nếu có các file excel khác đang mở. Giờ em muốn khi file của em được mở lên thì các file excel đang mở khác được save và đóng lại, và không cho mở thêm bất kỳ file excel nào khác nữa cho đến khi file của em đóng lại (chẳng phải pro gì, chỉ đơn giản là em không muốn cái file của em mắc lỗi mà thôi :)) )

Mò trên mạng mấy hôm rùi mà không thấy, mà tự viết code thì em chịu.
 
Upvote 0
E đã test theo cách của anh và thấy đúng. Nhưng khổ nỗi cái file excel cùi của em nó cứ lỗi lung tung nếu có các file excel khác đang mở..

Vậy sao không trị tận gốc cho nó? File của bạn bị lỗi thì trị chính file ấy, mắc mớ gì file khác?
Đưa file của lên xem thử nào!
 
Upvote 0
Vậy sao không trị tận gốc cho nó? File của bạn bị lỗi thì trị chính file ấy, mắc mớ gì file khác?
Đưa file của lên xem thử nào!

Chào bác, xin phép được chen ngang 1 câu hỏi ngắn do chủ topic không thấy gửi file.

Em xin code để: khi mở file A thì file B (D:\ABC\B.xls) cũng tự động mở theo và tự động đóng lại ngay mà không save. (Lý do là file A có dùng Vlookup để lấy dữ liệu trong file B, File B được thay đổi thường xuyên, nếu khi làm việc với file A mà ko mở file B lúc đó thì các hàm Vlookup không chịu cập nhật thông tin mới)
 
Upvote 0
Chào bác, xin phép được chen ngang 1 câu hỏi ngắn do chủ topic không thấy gửi file.

Em xin code để: khi mở file A thì file B (D:\ABC\B.xls) cũng tự động mở theo và tự động đóng lại ngay mà không save. (Lý do là file A có dùng Vlookup để lấy dữ liệu trong file B, File B được thay đổi thường xuyên, nếu khi làm việc với file A mà ko mở file B lúc đó thì các hàm Vlookup không chịu cập nhật thông tin mới)
Đại khái thế này thì phải
PHP:
Sub mofile()
Workbooks.Open duongdantenfile
Workbooks("tenfile").Close False
End Sub
 
Upvote 0
Dám cá với bạn code này không ăn thua. Nó sẽ chẳng đóng được những file excel mở trên các session khác nhau
Ví dụ thay vì người ta double click vào biểu tượng file để mở file thì người ta lại làm khác:
- Khởi động Excel (từ Start menu\Program)
- Xong, bấm Open để mở 1 file Excel
- Tiếp theo lại khởi động Excel lần nữa rồi lại bấm Open để mở file khác
- Với 2 lần Open như vậy thì 2 file Excel trên sẽ được xem là nằm trên 2 session khác nhau
- Bây giờ, nếu ta khởi động Excel, bấm Open để mở file đang chứa code thì chắc chắn rằng code của ta không biết có sự tồn tại của 2 file Excel đã mở trước đó
-------------
Bạn thí nghiệm sẽ biết
Em đang gặp trường hợp như thế. Có giải pháp nào để ta gộp hai session lại một không ạ
 
Upvote 0
Dám cá với bạn code này không ăn thua. Nó sẽ chẳng đóng được những file excel mở trên các session khác nhau
Ví dụ thay vì người ta double click vào biểu tượng file để mở file thì người ta lại làm khác:
- Khởi động Excel (từ Start menu\Program)
- Xong, bấm Open để mở 1 file Excel
- Tiếp theo lại khởi động Excel lần nữa rồi lại bấm Open để mở file khác
- Với 2 lần Open như vậy thì 2 file Excel trên sẽ được xem là nằm trên 2 session khác nhau
- Bây giờ, nếu ta khởi động Excel, bấm Open để mở file đang chứa code thì chắc chắn rằng code của ta không biết có sự tồn tại của 2 file Excel đã mở trước đó
-------------
Bạn thí nghiệm sẽ biết
Thầy @ndu96081631 ơi,
em thử làm như thầy nói là mở file excel theo session khác nhau và em dùng code:
Mã:
Sub CloseAllFiles()
Dim wb As Workbook
  For Each wb In Application.Workbooks
    If wb.Name <> ThisWorkbook.Name Then
      wb.Close SaveChanges:=True
    End If
  Next wb
End Sub
Và e kiểm tra thì thấy nó vẫn đóng hết toàn bộ file mở cùng hay khác session đó ạ...
Cứ mỗi làm vào một Session mới là em open excel từ START, rùi em open file trong cửa sổ Excel vừa mở mới...
Không biết em có sai gì không?
Cám ơn thầy nhiều
 
Upvote 0
Hướng làm là như vậy, còn cụ thể ra sao thì hiện giờ mình chưa nghĩ ra.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom