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
Chào bạn bạn xem lại tên file trong forder có phải là *BangLuong*.xls không?
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
Bạn xem đường dẫn forder của bạn có là tiếng việt có dấu không?
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)
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?
ultraview là sao thầy - tôi chưa biết
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:
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é.
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é
Để 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.
Da chào Thầy và Gitiho em đã làm được rồi ạ. Cám ơn Trung Tâm