Trong lĩnh vực làm việc với VBA (Visual Basic for Applications), chúng ta thỉnh thoảng gặp phải lỗi “Run-time error ’75’: Path/File access error”. Điều này có nghĩa gì và làm thế nào để khắc phục? Chúng ta cùng bostonenglish.edu.vn hãy cùng tìm hiểu trong bài viết này.
Thông báo lỗi
Trước khi đi sâu vào việc khắc phục lỗi, chúng ta cần hiểu thông báo lỗi này trông như thế nào.
Nguyên nhân lỗi
Lỗi “Path/File access error” có mã lỗi là 75. Trong ngôn ngữ lập trình VBA, mã lỗi này có nghĩa là bạn đang cố gắng truy cập tới một đường dẫn hoặc tên file không đúng cách. Có một số nguyên nhân cụ thể gây ra lỗi này:
- Trùng tên, trùng vị trí khi tạo thư mục: Bạn có thể gặp lỗi này khi bạn muốn tạo một thư mục bằng lệnh VBA, nhưng thư mục đó đã tồn tại trước đó. Vì vậy, không thể tạo thêm một thư mục có cùng tên và vị trí.
- Truy cập tới thư mục không tồn tại: Lỗi cũng xảy ra khi bạn cố gắng truy cập tới một thư mục không tồn tại trên hệ thống.
- Tên file/thư mục chứa ký tự tiếng Việt có dấu: VBA không thể đọc các ký tự tiếng Việt có dấu, do đó, nếu tên file hoặc thư mục của bạn chứa các ký tự này, lỗi sẽ xảy ra.
- Truy cập tới file đang được mở từ trước: Nếu bạn cố gắng truy cập tới một file mà nó đã được mở từ trước, lỗi cũng sẽ xuất hiện.
Cách khắc phục lỗi
Bây giờ, chúng ta sẽ tìm hiểu cách khắc phục lỗi “Path/File access error” trong VBA.
1. Kiểm tra sự tồn tại của thư mục
Khi bạn muốn tạo mới một thư mục bằng lệnh VBA, hãy đảm bảo rằng thư mục đó chưa tồn tại trước đó. Nếu thư mục đã tồn tại, bạn không thể tạo thêm một thư mục có cùng tên và vị trí.
2. Kiểm tra sự tồn tại của file và trạng thái mở của nó
Khi bạn muốn truy cập tới một file, hãy kiểm tra xem file đó có tồn tại không. Đồng thời, bạn cũng nên kiểm tra xem file đó có đang được mở ra hay không.
3. Đặt tên file/thư mục không chứa ký tự tiếng Việt có dấu
Để tránh lỗi liên quan đến ký tự tiếng Việt có dấu, hãy đặt tên file và thư mục của bạn sao cho không chứa các ký tự này. Thay vì sử dụng dấu cách, bạn có thể sử dụng dấu gạch ngang (-) để nối các ký tự với nhau.
4. Sử dụng hàm kiểm tra file đang mở
Bạn có thể sử dụng một hàm như sau để kiểm tra xem một file đang mở hay không:
Function IsFileOpen(fileName As String)
' Function kiểm tra file đang mở hay đóng
Dim fileNum As Integer
Dim errNum As Integer
' Bỏ qua các lỗi có thể gặp
On Error Resume Next
fileNum = FreeFile()
' Thực hiện việc mở/đóng file xem có lỗi không
' Lỗi xảy ra có nghĩa là file đang mở
Open fileName For Input Lock Read As #fileNum
Close fileNum
' Lấy mã lỗi
errNum = Err
' Đặt cơ chế bẫy lỗi về mặc định
On Error GoTo 0
' Kiểm tra theo mã lỗi
Select Case errNum
' Mã lỗi = 0 có nghĩa file đang đóng
Case 0
IsFileOpen = False
' Mã lỗi = 70 có nghĩa file đang mở
Case 70
IsFileOpen = True
' Các lỗi khác
Case Else
IsFileOpen = errNum
End Select
End Function
Cách sử dụng:
Đặt function IsFileOpen
vào trong một Module.
Khi viết code trong một sub liên quan tới kiểm tra file đang đóng hoặc mở, bạn có thể dùng như ví dụ sau:
Sub CheckIfFileOpen()
Dim fileName As String
fileName = "C:\Users\marks\Documents\......." ' Tên file kèm đường dẫn
' Gọi function kiểm tra file đóng hay mở
If IsFileOpen(fileName) = False Then
' Câu lệnh thực hiện khi file đang đóng
Else
' File đang mở hoặc lỗi khác
MsgBox fileName & " is already open."
End If
End Sub
Chúc các bạn áp dụng thành công!
Câu hỏi thường gặp
- Tôi gặp lỗi “Path/File access error” khi tạo một thư mục mới. Làm thế nào để khắc phục?
Đảm bảo rằng thư mục bạn muốn tạo chưa tồn tại trước đó. Nếu thư mục đã tồn tại, bạn không thể tạo thêm một thư mục có cùng tên và vị trí.
- Tại sao tôi gặp lỗi khi truy cập tới một thư mục không tồn tại?
Lỗi này xuất hiện khi bạn cố gắng truy cập tới một thư mục mà không tồn tại trên hệ thống. Hãy đảm bảo rằng thư mục đó đã được tạo trước.
- Làm thế nào để tránh lỗi về ký tự tiếng Việt có dấu khi đặt tên file/thư mục?
Để tránh lỗi này, hãy đặt tên file và thư mục của bạn sao cho không chứa các ký tự tiếng Việt có dấu. Sử dụng dấu gạch ngang (-) để nối các ký tự với nhau thay vì dấu cách.
- Tôi muốn kiểm tra xem một file đang được mở hay không. Làm thế nào để làm điều đó?
Bạn có thể sử dụng hàm
IsFileOpen
được đề cập trong bài viết để kiểm tra xem một file đang được mở hay không. - Có cách nào để tự động khắc phục lỗi “Path/File access error” trong VBA không?
Không có cách tự động khắc phục hoàn toàn lỗi này, nhưng bạn có thể sử dụng các kiểm tra và xử lý lỗi để đảm bảo rằng ứng dụng VBA của bạn hoạt động một cách trơn tru và không gặp lỗi này.
Kết luận
Trong bài viết này, chúng ta đã tìm hiểu về lỗi “Path/File access error” trong VBA, bao gồm thông báo lỗi, nguyên nhân gây ra lỗi, và cách khắc phục. Bằng cách áp dụng các biện pháp được đề xuất, bạn có thể giảm thiểu rủi ro gặp lỗi này trong quá trình làm việc với VBA. Chúc các bạn thành công!