• Hàm Dir lỗi khi đường dẫn chứa ký tự đặc biệt và dấu
  • 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" 
    Mã:
    If Dir(Path, vbDirectory) = "" Then
    Vậy em phải xử lý như nào ạ.
    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é.
    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 
    Em cảm ơn nhiều ạ 😊
  • 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

    (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ạn đổi qua dùng FSO hoặc dùng hàm API
    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 ạ.
    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 > 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ạn đổi qua dùng FSO hoặc dùng hàm API
    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 ạ.
    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:
    (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ạn đổi qua dùng FSO hoặc dùng hàm API
    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 ạ.
    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à.
    Đây là code copy của em ạ
    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é.
  • RE: Hàm Dir lỗi khi đường dẫn chứa ký tự đặc biệt và dấu

    AnNguyen > 04-08-19, 08:41 PM

    (04-08-19, 07:04 PM)ongke0711 Đã viết: Hàm copy file bằng FSO thì trên diễn đàn cũng có nhiều, bạn search đi nhé.
    Vâng Em cảm ơn bác ạ.