Kiểm tra file có tồn tại không

Liên hệ QC

thuyyeu99

Trùm Nhiều Chuyện
Tham gia
6/6/08
Bài viết
1,729
Được thích
875
Em có 1 file Excel tên là A và 1 file Excel phụ tên là B em muốn khi mở file Excel chính (A) và nhấn nút tìm thì nó tự động tìm file Excel phụ (B). Nếu file B không có thì hiện thông báo "File B chưa có" Else "file nay đã có " ----(2 File cung 1 thu muc). Nhờ các anh chị giúp đỡ.

Cám ơn các anh chị quan tâm
 
Lần chỉnh sửa cuối:
Em có 1 file Excel tên là A và 1 file Excel phụ tên là B em muốn khi mở file Excel chính (A) và nhấn nút tìm thì nó tự động tìm file Excel phụ (B). Nếu file B không có thì hiện thông báo "File B chưa có" Else "file nay đã có " ----(2 File cung 1 thu muc). Nhờ các anh chị giúp đỡ.

Cám ơn các anh chị quan tâm

Bạn thử Function sau đây:
PHP:
Function FileExists(ByVal FName) As Boolean
' Trả về TRUE nếu file tồn tại, không tồn tại là FALSE
' fname là tên File bao gồm cả tên đường dẫn
Dim x As String
    On Error GoTo TBLoiPath
    x = Dir(FName)
    If x <> "" Then FileExists = True Else FileExists = False
    Exit Function
TBLoiPath:
    FileExists = False
End Function

VD : =FileExists("C:\windows\taskman.exe")

Nguồn: Mr. Tedaynui (http://www.giaiphapexcel.com/forum/showpost.php?p=65283&postcount=15)
 
Upvote 0
Rủi đường dẫn không có định thì sao anh
Ví dụ bữa nay đường dẫn D:\Du lieu Thuy ----- ngày mai đường dẫn F:\Du lieu dang lam Thuy
thì sao anh (Em chỉ muốn kiểm tra File phụ trong cùng 1 thu mục với file chính thôi còn đường dẫn thì không biết chính xác được)
 
Lần chỉnh sửa cuối:
Upvote 0
Rủi đường dẫn không có định thì sao anh
Ví dụ bữa nay đường dẫn D:\Du lieu Thuy ----- ngày mai đường dẫn F:\Du lieu dang lam Thuy
thì sao anh
Trời ơi! Thì bạn sửa lại đường dẫn trong hàm tự tạo đó! Chứ bạn move file/folder đi chỗ khác thì chỉ có bạn biết! Excel nó đâu có thông minh đến mức độ đó.
 
Upvote 0
Rủi đường dẫn không có định thì sao anh
Ví dụ bữa nay đường dẫn D:\Du lieu Thuy ----- ngày mai đường dẫn F:\Du lieu dang lam Thuy
thì sao anh
Đã gọi là TIM thì nguyên tắc phải biết TÌM Ở ĐÂU chứ ---> Chả lẽ tìm hết các ổ đĩa sao? (kể cả USB)
???
TÌM thì đương nhiên được rồi đó... nhưng có trường hợp tên file trùng ---> Bạn tính sao? (cái tên TRÙNG ấy lại không phải file bạn cần)
Ẹc... Ẹc...
 
Upvote 0
Vậy thừ Code này xem. Tìm được thì nó sẽ báo thôi.
PHP:
Sub FindFile()
With Application.FileSearch
    .LookIn = "D:\Download"
    .Filename = "GAME 2A.xls"
    .Execute
    If .Execute() > 0 Then
        MsgBox "There were " & .FoundFiles.Count & " file(s) found."
        For i = 1 To .FoundFiles.Count
            MsgBox .FoundFiles(i)
        Next i
    Else
        MsgBox "There were no files found."
    End If
End With
End Sub
Thân.
 
Upvote 0
hihihi tự vì file của em có 1 macro là copy sheet của file A vào File B (cùng 1 thư mục). Em sử dụng thì không sao nhưng đồng nghiệp em sài nữa chẳng lẻ mỗi lần copy lại phải sữa đường dẫn.
 
Upvote 0
hihihi tự vì file của em có 1 macro là copy sheet của file A vào File B (cùng 1 thư mục). Em sử dụng thì không sao nhưng đồng nghiệp em sài nữa chẳng lẻ mỗi lần copy lại phải sữa đường dẫn.
Đã CÙNG THƯ MỤC thì cần gì chỉ đường dẩn nhỉ?
Cửa nào thì nó vẫn là Thisworkbook.Path mà thôi
 
Upvote 0
Đã CÙNG THƯ MỤC thì cần gì chỉ đường dẩn nhỉ?
Cửa nào thì nó vẫn là Thisworkbook.Path mà thôi

da đúng nhưng ý của em là khi mà đồng nghiệp không biết xóa file B thì nó sẽ tự động hiện thông báo là chưa có file B và phải tạo file Excel có tên là B.
Chứ còn file của em khi mà lỡ xóa nhấn vào nút tạo file nó bị lỗi +-+-+-+

ý em là muốn kiem tra file B có tồn tại hay không
Mã:
WBpath = ThisWorkbook.Path
WSname = Sheets("In").[C7]
WbName = WBpath & "\[B][COLOR=Red]B.xls[/COLOR][/B]"
Workbooks.Open (WbName)
Set TgtWb = Workbooks.Open(WbName)
For Each wSheet In Worksheets
    If wSheet.Name = WSname Then
        wSheet.Delete
     End If
Next
SrcWb.Activate
Sheets("In").Select
Sheets("In").Copy Before:=TgtWb.Sheets(1)
TgtWb.Activate
    Sheets("In").Name = WSname
    ActiveSheet.Shapes("CBTaoFile").Select
    Selection.Delete
    ActiveWorkbook.Save
    ActiveWindow.Close
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
da đúng nhưng ý của em là khi mà đồng nghiệp không biết xóa file B thì nó sẽ tự động hiện thông báo là chưa có file B và phải tạo file Excel có tên là B.
Chứ còn file của em khi mà lỡ xóa nhấn vào nút tạo file nó bị lỗi +-+-+-+
Vậy mục địch của bạn là tìm file mang tên nào đó (nằm cùng thư mục với file hiện hành) có tồn tại hay không?
Tôi nói đúng chứ!
 
Upvote 0
Vậy nếu file đó bị ông nào đó đặt chế độ ẩn thì sao? (ở đây đang nói là ẩn hệ thống luôn đó)
Cái quan trọng là bạn bảo ông kia đừng có xóa hay di chuyển file này đi đâu hết cho mệt. Chỉ copy thôi được không?
Thân.
 
Upvote 0
Vậy nếu file đó bị ông nào đó đặt chế độ ẩn thì sao? (ở đây đang nói là ẩn hệ thống luôn đó)
Cái quan trọng là bạn bảo ông kia đừng có xóa hay di chuyển file này đi đâu hết cho mệt. Chỉ copy thôi được không?
Thân.

Em chi du phong truong hop thoi với lại đặt bãy lỗi để cho nó thêm Pro tí -\\/. (Ẩn thì chắc là không rồi, còn xóa thì có thể vô tình xóa đi)
 
Upvote 0
dạ đúng rồi ạh (hihih tự em không biết diễn đạt ý)
Thí nghiệm nhé:
PHP:
Sub Test()
  Dim i As Long
  With Application.FileSearch
    .LookIn = ThisWorkbook.Path: .Filename = "*.xls"
    For i = 1 To .FoundFiles.Count
      If .FoundFiles(i) = ThisWorkbook.Path & "\" & "Book3.xls" Then
        MsgBox "File dang ton tai": Exit Sub
      End If
    Next i
    MsgBox "Khong co file nay"
  End With
End Sub
Trong code này bạn sửa Book3.xls thành tên gì đó tùy bạn rồi test thử
Nói thêm: Bạn copy code này cho vào 1 file mới ---> Lưu file đàng hoàng rồi hẳn test ---> Nếu không thì "nó" chả biết Thisworkbook.Path là cái quái gì đâu (chưa lưu lấy đâu ra đường dẩn)
 
Lần chỉnh sửa cuối:
Upvote 0
Một cách khác, Các bạn có thể dùng Func sau để kiểm tra 1 File có tốn tại hay không
PHP:
Function FileExists(sFullPath As String) As Boolean
  FileExists = CBool(Len(Dir$(sFullPath)) > 0)
End Function
TDN
 
Upvote 0
Một cách khác, Các bạn có thể dùng Func sau để kiểm tra 1 File có tốn tại hay không
PHP:
Function FileExists(sFullPath As String) As Boolean
  FileExists = CBool(Len(Dir$(sFullPath)) > 0)
End Function
TDN
Tôi cũng có cách gần tương tự
PHP:
Function FileExist(FName As String) As Boolean
  FileExist = Dir(FName) <> ""
End Function
Với FName là đường dẩn + tên file đầy đủ của 1 file
Trong trường hợp bài toán ở topic này, tác giả cần xác định sự tồn tại của file nào đó có trong thư mục hiện hành thì sửa lại hàm trên thành:
PHP:
Function FileExist(FName As String) As Boolean
  FileExist = Dir(ThisWorkbook.Path & "\" & FName) <> ""
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Để tránh Copy đến thư mục khác, đổi tên tên file, thay đổi thuộc tính ta có thể kiểm tra ngay trong sự kiện Workbook_Open, nếu phát hiện có sự thay đổi, yêu cầu người sử dụng trả về nguyên trạng đồng thời Close file luôn, không cho thao tác gì nữa.
Trường hợp người ta cố tình xóa đi, hay cố tình thay đổi gì đó chỉ để ta không thực hiện được thì đành chịu.
 
Upvote 0
Thí nghiệm nhé:
PHP:
Sub Test()
  Dim i As Long
  With Application.FileSearch
    .LookIn = ThisWorkbook.Path: .Filename = "*.xls"
    For i = 1 To .FoundFiles.Count
      If .FoundFiles(i) = ThisWorkbook.Path & "\" & "Book3.xls" Then
        MsgBox "File dang ton tai": Exit Sub
      End If
    Next i
    MsgBox "Khong co file nay"
  End With
End Sub
Trong code này bạn sửa Book3.xls thành tên gì đó tùy bạn rồi test thử
Nói thêm: Bạn copy code này cho vào 1 file mới ---> Lưu file đàng hoàng rồi hẳn test ---> Nếu không thì "nó" chả biết Thisworkbook.Path là cái quái gì đâu (chưa lưu lấy đâu ra đường dẩn)


sao trên Excel 2007 lại lỗi 445 anh ơi
 
Upvote 0
Chào các bác, em đang học hỏi VBA, mong các bác giúp em làm thế nào để khi mở file book2 nó tự động kiểm tra luôn xem file book1 đã tồn tại chưa?
 
Upvote 0
Web KT

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

Back
Top Bottom