Combo box trong Excel lấy nguồn từ Access như thế nào?

Liên hệ QC

ghung2001

Thành viên mới
Tham gia
12/1/13
Bài viết
1
Được thích
0
Các Pro nào biết cho mình hỏi nhé.
Tình hình là mình có mua thiết bị của TQ, họ chuyển giao cho mình 2 file CDNB.mdb và Report.xls có các combo box như nguồn đính kèm.
Nhưng trên Report.xls (ở sheet1) lại thiếu một combo box mà mình mong muốn là combo box lô kiểm (0001, 0002,... tại trường ZCBH của bảng DBCS trong file CDNB.mdb). Cho mình hỏi như sau:
1/ cách tạo combo box lấy nguồn từ trường này lên và truy vấn theo lô kiểm được chọn
2/ làm sao xem được code mà họ viết như thế nào? đây là kiểu viết rất lạ và hay, trường lấy lên được viết trên comment trong Excel (các ô có chấm đỏ ở góc phải trên)
 

File đính kèm

  • combo.rar
    107.5 KB · Đọc: 116
1/Tại file Excel bạn thêm 1 sheet để chứa dữa liệu từ bảng DCBS vào.

Cách 1:

2/Bạn mở file CDNB lên. Trong Data Cont. chọn thẻ Table--> Đưa vệt sáng vào Table: DCBS ---Menu file--Export (Tại ô Save as Type: Chọn Excel 2003) --Xác định viij trí lưu---Nhấn Export
Chép kết quả vào Sheet trên là có nguồn cho Combo rồi.

Cách 2:

Dặt con trỏ vào ô A1 của Sheet thêm. Vào Menu Data--Chọn Import External Data--Import

Cửa sổ Select Data source hiện ra bạn nhấn New Source---Chọn Other/Advance--Tiếp theo chọn dòng Microsoft Jet 4.0..... --Next tại ô 1 Select or enter database name bạn chọn đến file Access của bạn---Bạn nhấn Test conection báo nối thành công là được---Cửa sổ tiếp theo bạn chọn bảng bạn cần rồi lần lượt OK là đã có dữ liệu.


Còn 1 cách rất chuẩn mực và hay là Attach Table DCBS hay Get External Data vào Sheet thêm. Dữ liệu giữa hai file liên kết cập nhật thay đổi thường xuyên, nhưng lâu ngày mình quên cách làm trong khi file của bạn không Convert được nên mình không Test kiểm tra được nên không dám hướng dẫn. Nếu làm tốt VBA thì dùng ADO cũng hay.
 
Lần chỉnh sửa cuối:
Mình mở file của bạn mới biết Code khá tốt. Vậy mình tham gia tiếp dùng ADO như sau:

Tại Sheet Select ta thêm 1 combobox1
1.Thêm code tại General Module:

[GPECODE=vb]Sub Data_ToComb()
Dim Cn As Object, Rec As Object, i
Dim MyPath As String, SqlStr As String, Str_Cn As String
Set Cn = CreateObject("ADODB.Connection")
Set Rec = CreateObject("ADODB.Recordset")
MyPath = ThisWorkbook.Path & "\CDNB.mdb"
Str_Cn = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & MyPath & ";"
SqlStr = "SELECT * FROM DBCS"
Cn.Open (Str_Cn)
Rec.Open SqlStr, Cn, 3, 1
With Sheet1.ComboBox1
.Clear
.ListRows = 20
.ColumnCount = Rec.Fields.Count
Rec.MoveFirst
Do While Not Rec.EOF
.AddItem Rec.Fields(0), i
i = i + 1
Rec.MoveNext
Loop
End With
Rec.Close: Set Rec = Nothing
Cn.Close: Set Cn = Nothing
End Sub
[/GPECODE]

Trong code có thể bỏ biến i, mình thêm vào để phòng khi bạn muốm nạp Combo nhiều cột

2/Thêm 1 code vào Sheet1 class code:

[GPECODE=vb]Private Sub Worksheet_Activate()
Data_ToComb
End Sub[/GPECODE]



3/Thêm 1 dòng vào code của Workbook class

[GPECODE=vb]Private Sub Workbook_Open()
'....................................
Data_ToComb
'..................................
End sub[/GPECODE]

Lưu ý là 2 file này phải cùng thư muc. Trong ví dụ mình lấy cột đầu của bảng bạn điều chỉnh về cột mình cần nha
 

File đính kèm

  • Compressed.rar
    110.1 KB · Đọc: 116
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom