Giúp đỡ về import dữ liệu từ excel vào access

Liên hệ QC

pass_everything

Thành viên mới
Tham gia
20/5/09
Bài viết
1
Được thích
0
Hi everybody
Mình đang viết 1 đoạn code để import dữ liệu từ Excel vào Access. mình đã thử đoạn code của anh Duyệt:
Mã:
[SIZE=3][COLOR=blue]Sub[/COLOR] ADOFromExcelToAccess() 
   [COLOR=green]' Xuất dữ liệu từ Active sang một bảng trong Access[/COLOR]
   [COLOR=green]' Bạn phải chỉnh lại thủ tục này trước khi sử dụng[/COLOR]
   [COLOR=blue]Dim[/COLOR] cn [COLOR=blue]As[/COLOR] ADODB.Connection, rs [COLOR=blue]As[/COLOR] ADODB.Recordset, r [COLOR=blue]As[/COLOR] [COLOR=blue]Long[/COLOR] 
   [COLOR=green]' Kết nối vào CSDL Access [/COLOR]
   [COLOR=blue]Set[/COLOR] cn = [COLOR=blue]New[/COLOR] ADODB.Connection 
   cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _           "Data Source=C:\FolderName\DataBaseName.mdb;" 
   [COLOR=green]' Mở một recordseet mới[/COLOR]
   [COLOR=blue]Set[/COLOR] rs = [COLOR=blue]New[/COLOR] ADODB.Recordset 
   rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable 
   [COLOR=green]' Tất cả mẫu tin trong bảng[/COLOR]
   r = 3  [COLOR=green]' Hàng bắt đầu trong worksheet[/COLOR]
   [COLOR=blue]Do[/COLOR] [COLOR=blue]While[/COLOR] Len(Range("A" & r).Formula) > 0 
      [COLOR=green]' Lập lại cho đến khi gặp một ô trống trong cột A[/COLOR]
      [COLOR=blue]With[/COLOR] rs 
         .AddNew  [COLOR=green]' [/COLOR][COLOR=#008000]tạo một mẫu tin mới[/COLOR]
         [COLOR=green]' add values to each field in the record[/COLOR]
         .Fields("FieldName1") = Range("A" & r).Value 
         .Fields("FieldName2") = Range("B" & r).Value 
         .Fields("FieldNameN") = Range("C" & r).Value 
         [COLOR=green]' Thêm vào các trường khác nếu cần thiết...[/COLOR]
         .Update  [COLOR=green]' lưu mẫu tin mới này[/COLOR]
      [COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR] 
      r = r + 1  [COLOR=green]' [/COLOR][COLOR=#008000]Hàng mới[/COLOR]
   [COLOR=blue]Loop[/COLOR] 
   rs.Close 
   [COLOR=blue]Set[/COLOR] rs = [COLOR=blue]Nothing[/COLOR] 
   cn.Close 
   [COLOR=blue]Set[/COLOR] cn = [COLOR=blue]Nothing[/COLOR] 
[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR] 
[/SIZE]
Đoạn code này duyệt theo hàng đến khi gặp ô trống thì dừng lại nhưng mình muốn sửa thành duyệt theo cột, không biết bạn nào có thể giúp mình không.
Trân thành cảm ơn.
 
Nếu duyệt theo cột thì bạn phải thay đổi cấu trúc dữ liệu của file exel ngược lại vì code trên là import từng bản ghi mà. Sau khi sửa như vậy thì thay đổi biến chạy A và r ngược lại:

Cot= 66 ' Cột bắt đầu trong worksheet ( CỘT B)
Do While Len(Range(cstr(char(Cot)) & 1).Formula) > 0
' Lập lại cho đến khi gặp một ô trống trong cột 1
With rs
.AddNew ' tạo một mẫu tin mới
' add values to each field in the record
.Fields("FieldName1") = Range(cstr(char(Cot)) & 1).Value
.Fields("FieldName2") = Range(cstr(char(Cot)) & 2).Value
.Fields("FieldNameN") = Range(cstr(char(Cot)) & 3).Value
' Thêm vào các trường khác nếu cần thiết...
.Update ' lưu mẫu tin mới này
End With
Cot = Cot + 1 ' Cột mới
 
Web KT
Back
Top Bottom