cuongbv2103
Thành viên mới

- Tham gia
- 16/11/22
- Bài viết
- 6
- Được thích
- -2
Em chạy mà nó cứ báo lỗi subscript out of range, tên sheet, vùng lấy đều đúng.
các bác giúp em với.
em cảm ơn!
các bác giúp em với.
em cảm ơn!
Dạ đây anh:Range đúng, sheet đúng, còn work book đúng ko?
Góp ý: bạn nên để lại đoạn code bị lỗi lên bài viết để mọi người xem cho
vâng bác ạ, em chưa viết VBA bao giờ, và đoạn mã trên là của ChatGPT, em đang học mò bác ạ. hicChắc bạn chưa hề biết viết code bao giờ.
Chạy bị báo lỗi thì VBA cho biết ràng ràng ở dòng nào, phải cho người giúp biết dòng ấy chứ!
Theo những thông tin đưa lên đây thì căn cứ vào đâu để khẳng định tên Sheet, tên vùng đều đúng nhỉ.Em chạy mà nó cứ báo lỗi subscript out of range, tên sheet, vùng lấy đều đúng.
Theo những thông tin đưa lên đây thì căn cứ vào đâu để khẳng định tên Sheet, tên vùng đều đúng nhỉ.
ko được bác ạ, báo lỗi ko thể xác định phạm vi.mình cũng từng gặp trường hợp như bạn, cũng không tìm được nguyên nhân.
Nhưng mình sửa phần sao cho 2 vùng range nguồn và đích đến bằng nhau thì code chạy được
Bạn thử sửa lại xem sao
Set destinationRange1 = openWB.Sheets("Sheet3").Range("B7389")
Set destinationRange2 = openWB.Sheets("Sheet3").Range("L7:AK389")
Tặng bạn đoạn code xài chơi. Copy tất cả code về cho vào 1 moduleEm chạy mà nó cứ báo lỗi subscript out of range, tên sheet, vùng lấy đều đúng.
các bác giúp em với.
em cảm ơn!
Sub Copy_DuLieu_Tu_File_Dong()
Dim Source As String, DataRange As String, SQL As String
Source = "D:\Download\PHUONG_T4_2024.xlsx"
DataRange = "[Sheet3$B4:D386]"
SQL = "Select * From " & DataRange
CopyData Source, SQL, "Sheet3", "B7"
End Sub
'Phần phía dưới này không cần hiểu làm gì cho mệt óc. Cứ copy về để y nguyên là được
Public Sub CopyData(sPath As String, SQL As String, DesSheet As String, DesRange As String)
With CreateObject("ADODB.Recordset")
.Open (SQL), Provider & sPath & ExcelProperty
Sheets(DesSheet).Range(DesRange).CopyFromRecordset .DataSource
End With
End Sub
Public Function ExcelProperty() As String
ExcelProperty = ";Extended Properties=""Excel 12.0 Xml;HDR=No;IMEX=1"""
End Function
Public Function Provider() As String
Provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
End Function
vâng bác, để em thử xem sao.Tặng bạn đoạn code xài chơi. Copy tất cả code về cho vào 1 module
Mình chỉ copy 1 phần, nếu code đúng thì tự chế cháo thêm chút là được
Mã:Sub Copy_DuLieu_Tu_File_Dong() Dim Source As String, DataRange As String, SQL As String Source = "D:\Download\PHUONG_T4_2024.xlsx" DataRange = "[Sheet3$B4:D386]" SQL = "Select * From " & DataRange CopyData Source, SQL, "Sheet3", "B7" End Sub 'Phần phía dưới này không cần hiểu làm gì cho mệt óc. Cứ copy về để y nguyên là được Public Sub CopyData(sPath As String, SQL As String, DesSheet As String, DesRange As String) With CreateObject("ADODB.Recordset") .Open (SQL), Provider & sPath & ExcelProperty Sheets(DesSheet).Range(DesRange).CopyFromRecordset .DataSource End With End Sub Public Function ExcelProperty() As String ExcelProperty = ";Extended Properties=""Excel 12.0 Xml;HDR=No;IMEX=1""" End Function Public Function Provider() As String Provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" End Function
2 cái functions này luôn luôn trả về hằng, không nhận tham số, ngay cả thông số evironment nó cũng chả xét.Tặng bạn đoạn code xài chơi. Copy tất cả code về cho vào 1 module
Mình chỉ copy 1 phần, nếu code đúng thì tự chế cháo thêm chút là được
Mã:... Public Function ExcelProperty() As String ExcelProperty = ";Extended Properties=""Excel 12.0 Xml;HDR=No;IMEX=1""" End Function Public Function Provider() As String Provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" End Function
Nào giờ em lại không chú ý vụ này, cứ copy qua lại mà xài, dù không tốn bao nhiêu điện nước nhưng mà nhìn kỹ thì đúng là kỳ cục.2 cái functions này luôn luôn trả về hằng, không nhận tham số, ngay cả thông số evironment nó cũng chả xét.
Như vậy thì chúng là hằng quách rồi. Đặt function chi cho lúc gọi thêm tốn củi lửa.
Chú thích: lúc đặt tên function nên tránh các tên quá rõ rệt. Dễ bị đụng chạm với các tên có sẵn trong VBA.