Huỳnh hoài bảo
Huỳnh hoài bảo
Thảo luận 13 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 478 lượt xem

giáo sao code tôi viết giống hệt như trong bài giảng mà ngay dòng " File_duoc_mo

Thầy giáo cho hỏi : sao code tôi viết giống hệt như trong bài giảng mà ngay dòng : "    File_duoc_mo = Dir(DuongDan & TenFile) " VBA lại báo lỗi " run time error 52 - bad file name or number " là sao - dòng code thế này đây ah

Sub Luu_DuLieu()

    With Application.FileDialog(msoFileDialogFolderPicker)

        .AllowMultiSelect = False    'cho phep chon nhieu file

        If .Show = -1 Then      'co thuc hien chon noi dung

            Dim DuongDan As String     'dai dien cho duong dan

                DuongDan = .SelectedItems(1) & "\"

            Dim TenFile As String       'Dai dien cho ten file duoc chon

                TenFile = "*BangLuong*.xls*"

            Dim File_duoc_mo As String

                File_duoc_mo = Dir(DuongDan & TenFile)            ( đây là dòng báo lỗi)

            Do While File_duoc_mo <> ""

                'Xet file duoc chon

                Dim wb_KQ As Workbook   'Bien workbook ket qua (Bang luong tong hop)

                Dim wb_1 As Workbook     'Bien workbook duoc chon tu thu muc (Tung file bang luong chi tiet)

        

                Set wb_KQ = ThisWorkbook

                Set wb_1 = Workbooks.Open(Filename:=DuongDan & File_duoc_mo)

            

                'B1: xac dinh dong cuoi bang tong hop (Bang luong tong hop)

                Dim DongCuoi_KQ As Long

                DongCuoi_KQ = wb_KQ.Sheets("Data_TienLuong").Range("A" & Rows.Count).End(xlUp).Row

                

                'B2: xac dinh dong dau va dong cuoi bang chi tiet (Tung file bang luong chi tiet)

                Dim DongDau_CT As Long

                    DongDau_CT = 8

                    

                Dim DongCuoi_CT As Long

                    DongCuoi_CT = wb_1.Sheets(1).Range("F" & Rows.Count).End(xlUp).Row

                  'B3: xac dinh khoang cach

                Dim KhoangCach As Long

                KhoangCach = DongCuoi_CT - DongDau_CT + 1

                

                'B4: luu

                wb_KQ.Sheets("Data_TienLuong").Range("A" & DongCuoi_KQ + 1 & ":BM" & DongCuoi_KQ + KhoangCach).Value = _

                    wb_1.Sheets(1).Range("A" & DongDau_CT & ":BM" & DongCuoi_CT).Value

     

               'B5: Dong file noi dung

                wb_1.Close SaveChanges:=False

                        'Xac dinh lai file khac duoc mo

                File_duoc_mo = Dir

            Loop

        End If

    End With

End Sub


Thảo luận 13 câu trả lời
Lượt xem 478 lượt xem
Vỗ tay vỗ tay
Huỳnh hoài bảo 17:09 - Sep 20, 2020

Chào bạn bạn xem lại tên file trong forder có phải là *BangLuong*.xls không?

Vỗ tay vỗ tay
Huỳnh hoài bảo 11:09 - Sep 21, 2020

vâng thầy tên file trong foder là:  chuong10_Bangluong_T1, file 2 là ...T2, .....xls thì mình khai báo biến và set ten file là tenfile = "*Bangluong*.xls là đúng rồi mà sao VBA vẫn bắt lỗi kỳ thiệt

Vỗ tay vỗ tay
Huỳnh hoài bảo 11:09 - Sep 21, 2020

Bạn xem đường dẫn forder của bạn có là tiếng việt có dấu không?

Vỗ tay vỗ tay
Huỳnh hoài bảo 11:09 - Sep 21, 2020

Không thầy : đường dẫn và file thế này : C:\TL_hoc_excel\BT_Chuong_10\Chuong_Bangluong_T1 . Các file kia cũng giống vậy là T2,T3,T4 . Thế mà VBA vẫn bắt  lỗi ngay chỗ dòng đó (File_duoc_mo = Dir(DuongDan & TenFile) 

Vỗ tay vỗ tay
Huỳnh hoài bảo 11:09 - Sep 21, 2020

Chắc cái này phải xem trực tiếp máy của bạn thôi vì mình thử test không bị lỗi, bạn có ultraview không?

Vỗ tay vỗ tay
Huỳnh hoài bảo 11:09 - Sep 21, 2020

ultraview là sao thầy - tôi chưa biết

Vỗ tay vỗ tay
Huỳnh hoài bảo 11:09 - Sep 21, 2020

chào bạn là phần mềm điều khiển máy tính bạn có thể tải tại link sau:

https://ultraviewer.net/vi/

Vỗ tay vỗ tay
Huỳnh hoài bảo 23:09 - Sep 25, 2020
Thầy ơi em cũng bị lỗi tương tự thì sửa lỗi như thế nào ạ
Vỗ tay vỗ tay
Huỳnh hoài bảo 09:09 - Sep 26, 2020

Option Explicit

Sub Luu_DuLieu()

'Thu muc chon file

    With Application.FileDialog(msoFileDialogFilePicker)

        .AllowMultiSelect = True    'cho phep chon nhieu file

        .Show                             'Hien cua so chon file

    Dim i As Integer

        For i = 1 To .SelectedItems.Count

        'Xet file duoc chon

            Dim wb_KQ As Workbook   'Bien workbook ket qua (Bang luong tong hop)

            Dim wb_1 As Workbook     'Bien workbook duoc chon tu thu muc (Tung file bang luong chi tiet)

                Set wb_KQ = ThisWorkbook

                Set wb_1 = Workbooks.Open(.SelectedItems(i))

            'B1: xac dinh dong cuoi bang tong hop (Bang luong tong hop)

            Dim DongCuoi_KQ As Long

            DongCuoi_KQ = wb_KQ.Sheets("Data_TienLuong").Range("A" & Rows.Count).End(xlUp).Row

            'B2: xac dinh dong dau va dong cuoi bang chi tiet (Tung file bang luong chi tiet)

            Dim DongDau_CT As Long

                DongDau_CT = 8

            Dim DongCuoi_CT As Long

                DongCuoi_CT = wb_1.Sheets(1).Range("F" & Rows.Count).End(xlUp).Row

            'B3: xac dinh khoang cach

            Dim KhoangCach As Long

            KhoangCach = DongCuoi_CT - DongDau_CT + 1

            'B4: luu

            wb_KQ.Sheets("Data_TienLuong").Range("A" & DongCuoi_KQ + 1 & ":BM" & DongCuoi_KQ + KhoangCach).Value = _

                wb_1.Sheets(1).Range("A" & DongDau_CT & ":BM" & DongCuoi_CT).Value

            'B5: Dong file noi dung

            wb_1.Close SaveChanges:=False

        Next i

    End With

End Sub

bạn xem code nhé.

Vỗ tay vỗ tay
Huỳnh hoài bảo 22:10 - Oct 12, 2020

Da Chào Thầy. Phần này em cũng bị lỗi code "run time error 52 - bad file name or number" tương tự như trên và xem file KQ cũng bị lỗi như trường hợp bạn Huỳnh Hoài Bảo ạ. Thầy hỗ trợ xem lại đoạn code giúp em nhé

Vỗ tay vỗ tay
Huỳnh hoài bảo 10:10 - Oct 13, 2020

Để tránh lỗi tên file, bạn sử dụng code như thầy Tuấn Ba hướng dẫn ở trên, đó là bỏ qua phần tên file, chỉ xét mỗi file trong folder thôi.

Vỗ tay vỗ tay
Huỳnh hoài bảo 14:10 - Oct 13, 2020
Dạ code của Thầy ở trên dùng cho bài tập vòng lặp For Next...đã thực hành trước đó, còn đây là bài tập về Do While ạ. Trung tâm xem lại và chỉnh lỗi code cho vòng lặp Do While giúp em nhé. 
Vỗ tay vỗ tay
Huỳnh hoài bảo 15:10 - Oct 13, 2020

Da chào Thầy và Gitiho em đã làm được rồi ạ. Cám ơn Trung Tâm

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông