• Hỏi về Copy File
  • Hỏi về Copy File

    Xuân Thanh > 13-03-19, 03:25 PM

    Việc copy File bằng hàm FileCopy vẫn thường dùng. Nay cài lại Win7 và bộ Off2010 thì bị lỗi.Lỗi không phải do VBA vì khi Run không phát hiện lỗi nhưng File không được copy. Ai gặp trường hơp này chưa vậy cho chút ý kiến tham khảo
    Mã PHP:
    FileCopy Source:="D:\ChuongTrinh\ABC.accdb"Destination:="E:\ChuongTrinh\Backup\ABC.accdb" 
  • RE: Hỏi về Copy File

    duynamvnn1208 > 14-03-19, 10:59 AM

    Có phải bạn đi từ Excel 2016 xuống Excel 2010 không?
    Lỗi Library không tương thích khi hạ bản Office xuống đó.
    Trong Code VBA thanh công cụ bạn chọn Tool -> Refernce -> Bạn điều chỉnh lại thư viện từ Microsoft Offfice 16.0 Excel Enginer... xuống Microsoft Offfice 14.0 Excel Enginer... ...
    Bạn tự mò nhé vì mình dùng Office bản tiếng Nhật nên dịch qua tiếng Anh không đúng lắm đâu.

    Lỗi này xảy ra khi bạn mở file bằng Version 2016 thì nó tự động dịch lên 16.0 khi xuống lại thì ko tương thích.
    Kql: Khi viết code nên dùng 2010 hoặc là tất cả các máy đều dùng 2016
  • RE: Hỏi về Copy File

    ongke0711 > 14-03-19, 11:43 AM

    - Có thể là do quyền Administrator đối với file, hay thư mục cần copy ngăn cản việc copy.
    - Có thể do file bị lỗi, đã tắt rồi nhưng vẫn đang mở chạy ngầm nên không copy được.
    - ...
    Bác thử kiểm tra lại xem.
  • RE: Hỏi về Copy File

    Xuân Thanh > 15-03-19, 12:38 PM

    (14-03-19, 10:59 AM)duynamvnn1208 Đã viết: Có phải bạn đi từ Excel 2016 xuống Excel 2010 không?
    Lỗi Library không tương thích khi hạ bản Office xuống đó.
    Trong Code VBA thanh công cụ bạn chọn Tool -> Refernce -> Bạn điều chỉnh lại thư viện từ Microsoft Offfice 16.0 Excel Enginer... xuống Microsoft Offfice 14.0 Excel Enginer...  ...
    Bạn tự mò nhé vì mình dùng Office bản tiếng Nhật nên dịch qua tiếng Anh không đúng lắm đâu.

    Lỗi này xảy ra khi bạn mở file bằng Version 2016 thì nó tự động dịch lên 16.0 khi xuống lại thì ko tương thích.
    Kql: Khi viết code nên dùng 2010 hoặc là tất cả các máy đều dùng 2016

    File viết code và filecopy đều là office2010
  • RE: Hỏi về Copy File

    Xuân Thanh > 15-03-19, 12:44 PM

    (14-03-19, 11:43 AM)ongke0711 Đã viết: - Có thể là do quyền Administrator đối với file, hay thư mục cần copy ngăn cản việc copy.
    - Có thể do file bị lỗi, đã tắt rồi nhưng vẫn đang mở chạy ngầm nên không copy được.
    - ...
    Bác thử kiểm tra lại xem.

    File mở bình thường nhưng không copy được, file không chạy ngầm
    Để thử xem lại quyền hạn xem sao 
    Thank
  • RE: Hỏi về Copy File

    Xuân Thanh > 23-03-19, 09:00 AM

    (14-03-19, 11:43 AM)ongke0711 Đã viết: - Có thể là do quyền Administrator đối với file, hay thư mục cần copy ngăn cản việc copy.
    - Có thể do file bị lỗi, đã tắt rồi nhưng vẫn đang mở chạy ngầm nên không copy được.
    - ...
    Bác thử kiểm tra lại xem.

    Anh đã kiểm tra, File không bị hạn chế quyền đối với file. Kỳ lạ ở chỗ là copy các file Excel hoặc Word thì ngon lành nhưng với file Access thì không được
  • RE: Hỏi về Copy File

    maidinhdan > 27-03-19, 03:28 PM

    (23-03-19, 09:00 AM)Xuân Thanh Đã viết:
    (14-03-19, 11:43 AM)ongke0711 Đã viết: - Có thể là do quyền Administrator đối với file, hay thư mục cần copy ngăn cản việc copy.
    - Có thể do file bị lỗi, đã tắt rồi nhưng vẫn đang mở chạy ngầm nên không copy được.
    - ...
    Bác thử kiểm tra lại xem.

    Anh đã kiểm tra, File không bị hạn chế quyền đối với file. Kỳ lạ ở chỗ là copy các file Excel hoặc Word thì ngon lành nhưng với file Access thì không được

    Dùng hàm này thử xem
    Mã PHP:
    Function SaochepFile(DuongdanCu As StringDuongdanMoi As String)
    On Error GoTo Loi
    If TestFilehayFolder(DuongdanCu) = False Then Exit Function    'Neu file khong ton tai thi ket thuc ham

         Dim objFileSystem As Object
         Set objFileSystem = CreateObject("Scripting.FileSystemObject")
         objFileSystem.CopyFile DuongdanCu, DuongdanMoi
         Set objFileSystem = Nothing
         
    Exit_Loi:
        Exit Function
    Loi:
        '
    MsgBox "Loi ham SaochepFile: Khong tim thay file de Copy"vbInformation"Thông báo"
        Resume Exit_Loi
    End 
    Function 


    Mã PHP:
    Function TestFilehayFolder(ByVal DuongDanFile As StringOptional TestFolder As Boolean) As Boolean   ' co them tham so True la kiem tra Folder, khong de la kiem tra File
    On Error GoTo Loi
       
        ' 
    Cach 2  'Kiem tra xem file hoac folder co ton tai hay khong?
        Dim Fso As Object

        Set Fso = CreateObject("Scripting.FileSystemObject")
        If DuongDanFile = "" Then Exit Function
        If TestFolder Then
            TestFilehayFolder = Fso.FolderExists(DuongDanFile)
        Else
            TestFilehayFolder = Fso.FileExists(DuongDanFile)
        End If
        Set Fso = Nothing
        
    Exit_Loi:
        Exit Function
    Loi:
        TestFilehayFolder = False
    End Function 
  • RE: Hỏi về Copy File

    Xuân Thanh > 28-03-19, 07:24 PM

    (27-03-19, 03:28 PM)maidinhdan Đã viết: Dùng hàm này thử xem
    Mã PHP:
    Function SaochepFile(DuongdanCu As StringDuongdanMoi As String)
    On Error GoTo Loi
    If TestFilehayFolder(DuongdanCu) = False Then Exit Function    'Neu file khong ton tai thi ket thuc ham

         Dim objFileSystem As Object
         Set objFileSystem = CreateObject("Scripting.FileSystemObject")
         objFileSystem.CopyFile DuongdanCu, DuongdanMoi
         Set objFileSystem = Nothing
         
    Exit_Loi:
        Exit Function
    Loi:
        '
    MsgBox "Loi ham SaochepFile: Khong tim thay file de Copy"vbInformation"Thông báo"
        Resume Exit_Loi
    End 
    Function 


    Mã PHP:
    Function TestFilehayFolder(ByVal DuongDanFile As StringOptional TestFolder As Boolean) As Boolean   ' co them tham so True la kiem tra Folder, khong de la kiem tra File
    On Error GoTo Loi
       
        ' 
    Cach 2  'Kiem tra xem file hoac folder co ton tai hay khong?
        Dim Fso As Object

        Set Fso = CreateObject("Scripting.FileSystemObject")
        If DuongDanFile = "" Then Exit Function
        If TestFolder Then
            TestFilehayFolder = Fso.FolderExists(DuongDanFile)
        Else
            TestFilehayFolder = Fso.FileExists(DuongDanFile)
        End If
        Set Fso = Nothing
        
    Exit_Loi:
        Exit Function
    Loi:
        TestFilehayFolder = False
    End Function 

    Cám ơn Dân. Đã dùng Scripting.FileSystemObject rồi nhưng cũng không xi nhê gì
    Rất lạ là Copy các file Excel hay Word thì OK nhưng đụng tới Access là không copy được. Hàm không báo lỗi nhưng File không được copy

    Mã PHP:
    Option Explicit
    Public MyFSO As New FileSystemObject

    Public Function CopyFile(SourceFile As StringDestinationFile As String)   
        
    ' Đặt hàm kiểm tra ở đây
         MyFSO.CopyFile Source:=SourceFile, Destination:=DestinationFile
    End Function

    Public Function KiemTraDuongDan(PathName As String) As Boolean
        If MyFSO.FileExists(PathName) Then
            KiemTraDuongDan = True
        Else
            KiemTraDuongDan = False
        End If
    End Function