-
Hàm Dir lỗi khi đường dẫn chứa ký tự đặc biệt và dấu
AnNguyen > 03-08-19, 05:29 PM
Em có sử dụng hàm Dir để kiểm tra file để copy vào 1 thư mục nhưng báo lỗi ạ "Bad file name or number"
Vậy em phải xử lý như nào ạ.Mã:If Dir(Path, vbDirectory) = "" Then
Em cảm ơn -
RE: Hàm Dir lỗi khi đường dẫn chứa ký tự đặc biệt và dấu
ongke0711 > 03-08-19, 07:19 PM
Hàm Dir() không đọc được tên folder hoặc tên file là tiếng Việt có dấu nhé.
Bạn đổi qua dùng FSO hoặc dùng hàm API.
Mã PHP:Function FileExists(ByVal filename As String) As Boolean
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
FileExists = fso.FileExists(filename)
Set fso = Nothing
End Function
Theo tôi bạn dùng hàm API cho nhanh.
Mã PHP:Option Explicit
Private Declare Function GetFileAttributesW Lib "kernel32.dll" (ByVal lpFileName As Long) As Long
Public Function FileExists(ByRef sFileName As String) As Boolean
'Const ERROR_FILE_NOT_FOUND = 2&
'Const ERROR_PATH_NOT_FOUND = 3&
'Const ERROR_SHARING_VIOLATION = 32&
Select Case (GetFileAttributesW(StrPtr(sFileName)) And vbDirectory) = 0&
Case True
FileExists = True
Case Else
Select Case Err.LastDllError
Case 2
MsgBox "Sai ten File"
Case 3
MsgBox "Khong tim thay duong dan"
Case 32
MsgBox "File khong duoc chia se full"
End Select
FileExists = False
End Select
End Function -
RE: Hàm Dir lỗi khi đường dẫn chứa ký tự đặc biệt và dấu
AnNguyen > 03-08-19, 09:23 PM
(03-08-19, 07:19 PM)ongke0711 Đã viết: Hàm Dir() không đọc được tên folder hoặc tên file là tiếng Việt có dấu nhé.
Em cảm ơn nhiều ạ 😊
Bạn đổi qua dùng FSO hoặc dùng hàm API.
Mã PHP:Function FileExists(ByVal filename As String) As Boolean
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
FileExists = fso.FileExists(filename)
Set fso = Nothing
End Function
Theo tôi bạn dùng hàm API cho nhanh.
Mã PHP:Option Explicit
Private Declare Function GetFileAttributesW Lib "kernel32.dll" (ByVal lpFileName As Long) As Long
Public Function FileExists(ByRef sFileName As String) As Boolean
'Const ERROR_FILE_NOT_FOUND = 2&
'Const ERROR_PATH_NOT_FOUND = 3&
'Const ERROR_SHARING_VIOLATION = 32&
Select Case (GetFileAttributesW(StrPtr(sFileName)) And vbDirectory) = 0&
Case True
FileExists = True
Case Else
Select Case Err.LastDllError
Case 2
MsgBox "Sai ten File"
Case 3
MsgBox "Khong tim thay duong dan"
Case 32
MsgBox "File khong duoc chia se full"
End Select
FileExists = False
End Select
End Function -
RE: Hàm Dir lỗi khi đường dẫn chứa ký tự đặc biệt và dấu
AnNguyen > 04-08-19, 04:05 PM
-
RE: Hàm Dir lỗi khi đường dẫn chứa ký tự đặc biệt và dấu
ongke0711 > 04-08-19, 04:51 PM
(04-08-19, 04:05 PM)AnNguyen Đã viết:
(03-08-19, 07:19 PM)ongke0711 Đã viết: Hàm Dir() không đọc được tên folder hoặc tên file là tiếng Việt có dấu nhé.
Bác ơi hàm này check ok nhưng khi dùng CopyFile để lưu file nó vẫn báo lỗi ạ. Giúp em đoạn copy file với ạ.
Bạn đổi qua dùng FSO hoặc dùng hàm API
Em cảm ơn.
Code copy file của bạn như thế nào?
Dùng FSO copy các file có dấu TV tốt mà. -
RE: Hàm Dir lỗi khi đường dẫn chứa ký tự đặc biệt và dấu
AnNguyen > 04-08-19, 06:22 PM
(04-08-19, 04:51 PM)ongke0711 Đã viết:
Đây là code copy của em ạ(04-08-19, 04:05 PM)AnNguyen Đã viết:
(03-08-19, 07:19 PM)ongke0711 Đã viết: Hàm Dir() không đọc được tên folder hoặc tên file là tiếng Việt có dấu nhé.
Bác ơi hàm này check ok nhưng khi dùng CopyFile để lưu file nó vẫn báo lỗi ạ. Giúp em đoạn copy file với ạ.
Bạn đổi qua dùng FSO hoặc dùng hàm API
Em cảm ơn.
Code copy file của bạn như thế nào?
Dùng FSO copy các file có dấu TV tốt mà.
Mã:Call FileCopy("duong dan file copy", "folder lưu ảnh")
-
RE: Hàm Dir lỗi khi đường dẫn chứa ký tự đặc biệt và dấu
ongke0711 > 04-08-19, 07:04 PM
(04-08-19, 06:22 PM)AnNguyen Đã viết: Đây là code copy của em ạ
Mã:Call FileCopy("duong dan file copy", "folder lưu ảnh")
Để đơn giản và gọn thì dùng hàm FileCopy() của VBA. Nó có sẵn, bạn không cần phải khai báo như đối với FSO nhưng nó không chấp nhận các ký tự đặc biệt trong tên file hay folder (Wildcards) và hay có những lỗi không mong muốn phát sinh. Theo tôi biết nếu file cần copy đang mở thì dùng FileCopy sẽ báo lỗi.
Do đó tôi nghĩ bạn dùng FSO thì tốt hơn. Đối với FSO nó chỉ xem một file nào đó đơn giản là file bất kế nó có mã hoá hay không, có ký tự đặc biệt hay không ...nó vẫn copy.
Hàm copy file bằng FSO thì trên diễn đàn cũng có nhiều, bạn search đi nhé.