Đưa dữ liệu từ booka vào lisview trong bookb

Liên hệ QC

challenge98

Thành viên chính thức
Tham gia
21/6/09
Bài viết
90
Được thích
5
Mình muốn đưa dữ liệu từ một booka vào lisview trong bookb mà chưa biết viết code như thế nào ai gợi ý cho mình với.
Xin xem file đính kèm.
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn làm luôn trên 1 Book cho đơn giản. Danh sách hàng đặt trên sheetA và nhập trên sheetB; Tìm hiểu Validation cho trường hợp này.
 
Upvote 0
Vì booka của mình luôn thay đổi còn bookb của mình có form cố định rồi mình muốn làm cái này cho chuyên nghiệp ai biết chỉ dùm với.
 
Upvote 0
Vì booka của mình luôn thay đổi còn bookb của mình có form cố định rồi mình muốn làm cái này cho chuyên nghiệp ai biết chỉ dùm với.
Bạn sử dụng code này:
Bạn lưu ý là nhớ sửa lại đường dẫn đến file gốc nhé

Mã:
Const MyPath As String = "C:\Users\Mr Dom\Desktop\GPE\booka va bookb\" 'Sua lai theo duong dan cua ban
Const MyFile As String = "Booka.xls"
Const MySh As String = "Sheet1"
Dim MyArg As String
'
Private Sub CommandButton1_Click()
    Dim i As Long, j As Long
    Dim No As Integer
    Dim MyArray(100, 2)
    ListBox1.ColumnCount = 2
    MyArg = "'" & MyPath & "[" & MyFile & "]" & MySh & "'!R"
        For j = 0 To 2
            For i = 0 To 100
                MyArray(i, j) = ExecuteExcel4Macro(MyArg & i + 1 & "C" & j + 1)
            Next
        Next
    ListBox1.List = MyArray()
    Erase MyArray
End Sub
Thân
 

File đính kèm

Upvote 0
Bạn sử dụng code này:
Bạn lưu ý là nhớ sửa lại đường dẫn đến file gốc nhé

Mã:
Const MyPath As String = "C:\Users\Mr Dom\Desktop\GPE\booka va bookb\" 'Sua lai theo duong dan cua ban
Const MyFile As String = "Booka.xls"
Const MySh As String = "Sheet1"
Dim MyArg As String
'
Private Sub CommandButton1_Click()
    Dim i As Long, j As Long
    Dim No As Integer
    Dim MyArray(100, 2)
    ListBox1.ColumnCount = 2
    MyArg = "'" & MyPath & "[" & MyFile & "]" & MySh & "'!R"
        For j = 0 To 2
            For i = 0 To 100
                MyArray(i, j) = ExecuteExcel4Macro(MyArg & i + 1 & "C" & j + 1)
            Next
        Next
    ListBox1.List = MyArray()
    Erase MyArray
End Sub
Thân
Bạn ơi, người ta chỉ khai báo Const Hằng As... khi Hằng này được sử dụng cho các Sub khác... Ở đây chỉ có 1 Sub duy nhất mà khai báo thế có vẽ hơi dư... Cứ Dim... bình thường trong nội bộ Sub là được rồi
 
Upvote 0
Excell của mình đang dở chứng không thêm control được, còn nhớ mà viết ra e không ổn. Vậy chỉ đề xuất thôi.
1/Cái bạn ấy cần là listview mà.
2/Mình thấy dùng New Database Query cũng nhanh gọn chính xác.
 
Upvote 0
Cảm ơn bạn domfootwear đã giúp nhưng chưa đúng ý mình lắm
1. Ở trong hộp thoại có hiện ra các mặt hàng nhưng chưa có chỗ chọn các măt hàng này để điền vào ô ở cột A của sheet hiện hành.
2. Có nút chọn đường dẫn tới foder của booka thì tốt chứ mỗi lần lại phải vào sửa code thì không tiện lắm
 
Upvote 0
À cho mình xin hỏi thêm có cách nào cho mảng Array của mình luôn luôn lằm trong listbox đó không chứ bạn domfootwear làm thì cả những dòng không có gì nó cũng đưa vào mảng.
 
Upvote 0
Cảm ơn bạn domfootwear đã giúp nhưng chưa đúng ý mình lắm
1. Ở trong hộp thoại có hiện ra các mặt hàng nhưng chưa có chỗ chọn các măt hàng này để điền vào ô ở cột A của sheet hiện hành.
2. Có nút chọn đường dẫn tới foder của booka thì tốt chứ mỗi lần lại phải vào sửa code thì không tiện lắm
Tạm thời giải quyết cho bạn câu 1, câu 2 chưa nghĩ ra.
Bạn xem file nhé
Thân
 

File đính kèm

Upvote 0
Mình thấy cách đơn giản nhất là copy dữ liệu từ booka sang bookb sau đó gán vào listview là đơn giản nhất
 
Upvote 0
Cảm ơn bạn domfootwear càng làm mình càng thấy nó hay nhưng còn các dòng không có mã nó cũng hiện lên. Có cách nào cho Array vừa hết vùng dữ liệu không bạn?
 
Upvote 0
Mình không hiểu là các bạn nhầm giữa listbox và listview hay sao đấy, mà nói là listview mà bài toàn listbox. Mình đã viết là Excel của mình đang sinh sự không thêm Listview đươc, nhưng nếu listbox thì có thể tham gia được. Có 2 vấn đề mình muốn lưu ý:
-Trích rút bằng Query nó cũng đảm bảo về tốc độ.
-Đây là cách nạp Listbox theo mình là gọn và nhanh nhất nếu không lọc như ý của bạn

Lệnh rút dữ liệu và nạp listbox như sau:
Mã:
Sub napdl()
Dim tam As Variant
Sheet1.[A1].QueryTable.Refresh BackgroundQuery:=False
tam = Sheet1.[A1].CurrentRegion.Value
ListBox1.Clear
ListBox1.List() = tam
End Sub
Hoặc gọn hơn chút nữa:
Mã:
Sub napdl()
Sheet1.[A1].QueryTable.Refresh BackgroundQuery:=False
ListBox1.Clear
ListBox1.List() = Sheet1.[A1].CurrentRegion.Value
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn sealand code của bạn có hộp thoại chọn đường dẫn nhưng nó có vẻ không thoáng lắm với lại chỉ chọn với file booka đó thôi còn chọn cái booka của mình cũ thì báo lỗi chỗ Sheet1.[A1].QueryTable.Refresh BackgroundQuery:=False
Mình đọc một số bài trên diễn đàn thấy chỉ tìm kiếm theo một cột được thôi như ví dụ trên của bạn domfootwear mình có thể đánh mã hoặc tên mặt hàng vào ô tìm kiếm không?
Cho mình hỏi thêm là trong trường hợp này thì dùng lisview tiện hay lisbox mình vẫn chưa phân biệt được ưu nhược điểm của 2 loại này.
 
Upvote 0
1/Listview là control cao cấp hơn Listbox nhất là về hình thức.Đã là phần mềm thì thường sd Listview chứ không dùng Listbox.
2/Bạn thay đổi nguồn bạn phải thay đổi query chứ .Ô A1 chính là ô đích query trả về khi bạn thay nguồn không sửa Query nên nó báo lỗi.

Mình nghĩ bạn nên tham khảo chuyển sang sd SQL hay ADODC cho nó "chuyên" hơn.

Bạn cứ nghiên cứu cách nạp, reset đi khi chủ động rồi thì lọc hay tìm ở đâu mà chả có cách. Không nhất thiết ở ô nào.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình gửi ví dụ về lấy dữ liệu bằng ADODC, bạn sẽ thấy cái hay của nó.
Lưu ý bạn phải giai nén ra, khi chạy file cần lấy dữ liệu ở bất kỳ đâu, kể cả USB đều đươc (Mình test qua mang Lan cung OK) Không nhất thiết ở cùng thư mục với file Bookb.xls , Sheet chứa dữ liệu nap đều là Sheet1 (Để gọn mình chưa làm chọn sheet)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom