Code xử lý tình trạng mở trùng file

Liên hệ QC

nghiaquangtran

Thành viên chính thức
Tham gia
28/10/08
Bài viết
79
Được thích
25
Các bạn nghiên cứu giúp vấn đề này nhé...

Mình có code để mở 1 file khác từ file đang hiện hành, nhưng đôi khi file đó vô tình đã được mở nên sẽ có cảnh báo ..tạm dịch "File này đã dc mở...bạn có muốn mở lại nó không"

Workbooks.Open ("c:\aaa.xls")
With ActiveWorkbook
.RunAutoMacros xlAutoOpen
End With
End Sub

Các bạn giúp dùm cách nào để trong trường hợp nếu file đó đã dc mở thì tự động "No"...CÓ NGHĨA LÀ KHÔNG RE-OPEN

Cám ơn nhiều
 
Lần chỉnh sửa cuối:
Các bạn nghiên cứu giúp vấn đề này nhé...

Mình có code để mở 1 file khác từ file đang hiện hành, nhưng đôi khi file đó vô tình đã được mở nên sẽ có cảnh báo ..tạm dịch "File này đã dc mở...bạn có muốn mở lại nó không"

Workbooks.Open ("c:\aaa.xls")
With ActiveWorkbook
.RunAutoMacros xlAutoOpen
End With
End Sub

Các bạn giúp dùm cách nào để trong trường hợp nếu file đó đã dc mở thì tự động "No"...CÓ NGHĨA LÀ KHÔNG RE-OPEN

Cám ơn nhiều
Thì bạn thêm 1 Function, kiểm tra file "ấy" có phải đang mở hay không là được rồi
- Nếu nó chưa mở, ta tiếp tực code của ta
- Nếu nó đã mở, hiện thông báo và không làm gì nữa cả
Đại khái thế!
 
Upvote 0
Thì bạn thêm 1 Function, kiểm tra file "ấy" có phải đang mở hay không là được rồi
- Nếu nó chưa mở, ta tiếp tực code của ta
- Nếu nó đã mở, hiện thông báo và không làm gì nữa cả
Đại khái thế!


Cám ơn Ndu,...nó đơn giản với bạn, nhưng với mình thì khó quá...hihi...bạn viết dùm mình đoạn code cho function đó với.

Cám ơn nhé
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử cái này né................

sub Sl4x()
On Error Resume Next
If isWorkbookOpen("as.xls") = False Then

Workbooks.Open ("C:\a.xls")

End With
Else
Workbooks("a.xls").Activate

End If
end sub
Function isWorkbookOpen(bookName As String) As Boolean
Dim vbResult As Boolean
Dim wbs As Workbook

vbResult = False
For Each wbs In Workbooks
If UCase(wbs.Name) = UCase(bookName) Then
vbResult = True
Exit For
End If
Next wbs
isWorkbookOpen = vbResult
End Function
 
Upvote 0
Cám ơn Ndu,...nó đơn giản với bạn, nhưng với mình thì khó quá...hihi...bạn viết dùm mình đoạn code cho function đó với.

Cám ơn nhé
Cái Function ấy khá đơn giản:
PHP:
Function WbIsOpen(WbName As String) As Boolean
  On Error Resume Next
  Application.Volatile
  WbIsOpen = Not Workbooks(WbName) Is Nothing
End Function
Dòng Application.Volatile thêm vào để code có thể cập nhật mỗi khi có thay đổi gì đó (chẳng hạn file mở ra, rồi lại đóng)
(Thuật toán này có thể áp dụng để xác định sự tồn tại của 1 sheet)
---------
Với hunglao: Code này chẳng cần đến vòng lập đâu bạn à!
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom