Tìm kiếm và lấy dữ liệu ở file không mở? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Hoàng Nhật Phương

Thành viên gắn bó
Tham gia
5/11/15
Bài viết
1,895
Được thích
1,219
Dear all,
Tôi đang muốn lấy dữ liệu vào các vùng có dấu hỏi chấm vào trong file có tên : LayDuLieu
Câu hỏi cụ thể cũng đã nằm trong file kèm này.
và nguồn dữ liệu để lấy nằm trong file có tên: Data
đk:2 file này cùng nằm chung trong 1 thư mục

Rất mong nhận được sự giúp đỡ của các bạn,
Thanks you very much
 

File đính kèm

Dear all,
Tôi đang muốn lấy dữ liệu vào các vùng có dấu hỏi chấm vào trong file có tên : LayDuLieu
Câu hỏi cụ thể cũng đã nằm trong file kèm này.
và nguồn dữ liệu để lấy nằm trong file có tên: Data
đk:2 file này cùng nằm chung trong 1 thư mục

Rất mong nhận được sự giúp đỡ của các bạn,
Thanks you very much
ở trên có bạn viết code còn nhanh hơn tôi đọc đề bài nữa , sợ quá đi
ở file laydulieu bạn dùng hàm Vlookup không được sao bạn ? có khó khăn gì chăng ?
bạn làm ơn đừng có pha mấy cái tiếng Tây vào nữa , nhiều lần tôi muốn nói rồi mà nghĩ bạn bỏ rồi ai dè giờ lại tiếp tục ....
 
Upvote 0
Mã:
Option Explicit
Sub GPE()
Dim I&, Kq(), DL(), Nguon(), Itm, Dic As Object
Dim fName As String, Wb As Workbook, Sh As Worksheet
Application.ScreenUpdating = False
fName = ThisWorkbook.Path & "\" & "Data.xls"
Set Wb = Application.Workbooks.Open(fName)
Set Sh = Wb.Worksheets("Sheet1")
    DL = Range(Sh.[C3], Sh.[C65000].End(3)).Resize(, 4)
Wb.Close False
With Sheet1
    Nguon = Range(.[F9], .[F65000].End(3))
    ReDim Kq(1 To UBound(Nguon), 1 To 2)
    Set Dic = CreateObject("Scripting.dictionary")
    For I = 1 To UBound(DL)
    Itm = CStr(DL(I, 1))
        If Not Dic.exists(Itm) Then
            Dic.Add CStr(DL(I, 1)), I
        End If
    Next I
    For I = 1 To UBound(Nguon)
    Itm = CStr(Nguon(I, 1))
        If Dic.exists(Itm) Then
            Kq(I, 1) = DL(Dic.Item(Itm), 3)
            Kq(I, 2) = DL(Dic.Item(Itm), 4)
        End If
    Next I
    .[G9:H65000].ClearContents
    .[G9].Resize(I - 1, 2) = Kq
Set Dic = Nothing
End With
Application.ScreenUpdating = True
End Sub

Xin cảm ơn bạn rất nhiều, kết quả rất đúng ý tôi.
Tuy nhiên tôi có chút thắc không được hiểu lắm mong bạn và mọi người giải thích giúp cho ạ:
Tôi có xem qua chủ đề này:
http://www.giaiphapexcel.com/forum/...-dữ-liệu-từ-file-không-mở&p=281338#post281338

Chào các bạn!

Tôi viết code sau để lấy dữ liệu từ một file không mở (File đang đóng thực sự):
......
Thanks !
Xin hỏi file đang đóng thực sự và file không mở có gì khác nhau không ạ? Hay câu nói trên của bạn đó chỉ giải thích cụ thể hơn thôi ạ.
 
Upvote 0
ở trên có bạn viết code còn nhanh hơn tôi đọc đề bài nữa , sợ quá đi
ở file laydulieu bạn dùng hàm Vlookup không được sao bạn ? có khó khăn gì chăng ?
bạn làm ơn đừng có pha mấy cái tiếng Tây vào nữa , nhiều lần tôi muốn nói rồi mà nghĩ bạn bỏ rồi ai dè giờ lại tiếp tục ....

Hì, cảm ơn bạn đã quan tâm sở dĩ file Data của tôi có rất nhiều ảnh nên dung lượng rất nặng vì vậy mỗi lần mở file nên rất nặng và phải đợi lâu. Tôi nhớ lại trước đây đã xem qua ở đâu đó có nói về vấn đề lấy dữ liệu mà không cần mở file lên. Vì thế tôi cũng thử tìm hiểu áp dụng xem có khả thi hơn không, nếu kết quả vẫn không thay đổi thì cũng hi vọng là cũng biết và nhận thức được thêm một chút gì đó về kiến thức.
Ah, tôi hay có thói quen gửi email như vậy mong bạn đừng cười. Nếu bạn và mọi người thấy lạ tôi sẽ rút kinh nghiệm.
Xin cảm ơn bạn nhiều.
 
Upvote 0
Code đã giải quyết được vấn đề của bạn rồi mà. Còn muốn thêm gì nữa.

Tôi nói như này bạn hiểu: file đang đóng nó khác hoàn toàn với file không mở
1. File đang đóng...có nghĩa hiện tại nó không mở (hay nói cách khác nó chưa mở)...nó có thể mở trong tương lại
2. Code với File không mở (mệnh đề này khẳng định rồi) nên nó luôn là file không bao giờ mở (trừ phi ta có mệnh đề khác áp đặt lại cho nó).

Và quay trở lại với đoạn code của tôi...Bạn cứ hiểu nó như là bạn đang cầm khẩu súng bắn ra 1 viên đan, dĩ nhiên với mắt thường của bạn, bạn không thể thấy được viên đạn bay... Code tôi viết ở trên tương tự như vậy... (có nghĩa là file đang đóng, chạy code...nó mở file và làm việc trong nháy mắt và đóng lại ngay lập tức...mắt chúng ta không thể nhìn thấy được.)
Còn việc code ở Link gì đó bạn dẫn có thể là file đó hoàn toàn có thể không cần mở mà có thể lấy được dữ liệu...

Cảm ơn bạn đã giải thích và lấy ví dụ rõ ràng nên tôi đã hiểu được vấn đề, sở dĩ tôi hỏi vậy vì mới đầu tôi nghĩ chúng không khác gì nhau.
Và nếu có khác nhau thì liệu có gì đặc biệt không ?
Cái dòng màu xanh khiến tôi rất thích thú và muốn hỏi thêm có thể trường hợp này sẽ giải quyết được vấn đề file Data ì ạch được cũng nên.
Bạn có thể cho tôi xin một đoạn code cho file đính kèm về trường hợp màu xanh như bạn giải thích được không?
Thật sự hiện tôi đang ở nhà nên không có file thật để đưa vào áp dụng nên không biết nhanh chậm ra sao, vì vậy muốn tìm hiểu thêm để có nhiều sự tham khảo trường hợp nào tốt tôi sẽ áp dụng.
Nếu không phiền mong bạn chỉ thêm cho.
Một lần nữa xin cảm ơn bạn rất nhiều.
 
Upvote 0
Cảm ơn bạn đã giải thích và lấy ví dụ rõ ràng nên tôi đã hiểu được vấn đề, sở dĩ tôi hỏi vậy vì mới đầu tôi nghĩ chúng không khác gì nhau.
Và nếu có khác nhau thì liệu có gì đặc biệt không ?
Cái dòng màu xanh khiến tôi rất thích thú và muốn hỏi thêm có thể trường hợp này sẽ giải quyết được vấn đề file Data ì ạch được cũng nên.
Bạn có thể cho tôi xin một đoạn code cho file đính kèm về trường hợp màu xanh như bạn giải thích được không?
Thật sự hiện tôi đang ở nhà nên không có file thật để đưa vào áp dụng nên không biết nhanh chậm ra sao, vì vậy muốn tìm hiểu thêm để có nhiều sự tham khảo trường hợp nào tốt tôi sẽ áp dụng.
Nếu không phiền mong bạn chỉ thêm cho.
Một lần nữa xin cảm ơn bạn rất nhiều.
nếu bạn có hứng thú thì tìm hiểu ADO, nó sẽ giúp bạn nhiều đấy, tôi thì không bao giờ làm việc theo kiểu mở file lên lấy rồi đóng lại, nó sẽ làm chậm nếu các file con nặng
 
Upvote 0
Nếu dùng cách không cần mở file như bạn nói thì tôi chỉ có thể copy tất tần tật qua cho bạn được... Chứ còn kiểu vlookup như vầy thì thua....

Bạn muốn thì thỉnh cầu nhờ cái bạn DoveandRose ở #2 ấy, bạn ấy chuyên về cái vụ đó đó...--=0--=0--=0

Tôi biết các bạn đều là những người tài giỏi và vui tính hay đùa vì tôi đã được các bạn nhiệt tình giúp đỡ nên tôi rất trân trọng.
Có thể bạn làm được nhưng không phải là sở trường hay chuyên môn lên mới khiêm tốn như vậy. Nếu vậy thì rất mong nhận được sự giúp đỡ từ bạn DoveandRose từ nhiều bạn khác trong diễn đàn.
Tôi xin cảm ơn các bạn nhiều.
 
Upvote 0
Tôi biết các bạn đều là những người tài giỏi và vui tính hay đùa vì tôi đã được các bạn nhiệt tình giúp đỡ nên tôi rất trân trọng.
Có thể bạn làm được nhưng không phải là sở trường hay chuyên môn lên mới khiêm tốn như vậy. Nếu vậy thì rất mong nhận được sự giúp đỡ từ bạn DoveandRose từ nhiều bạn khác trong diễn đàn.
Tôi xin cảm ơn các bạn nhiều.

mình viết code dỡ lắm bạn ơi , bạn cứ kêu tên mình thì mình ráng sức vậy
Mã:
Public Sub hello()
Dim filename As String, lr As Long
filename = "'" & ThisWorkbook.Path & "\[Data.xls]Sheet1'!$C$3:$F$11"
With Sheet1
    lr = WorksheetFunction.Max(9, .[F65000].End(xlUp).Row)
    .Range("G9:G" & lr).Formula = "=VLOOKUP(F9," & filename & ",3,0)"
    .Range("H9:H" & lr).Formula = "=VLOOKUP(F9," & filename & ",4,0)"
    .Range("G9:H" & lr).Value = .Range("G9:H" & lr).Value
End With
End Sub
 
Upvote 0
nếu bạn có hứng thú thì tìm hiểu ADO, nó sẽ giúp bạn nhiều đấy, tôi thì không bao giờ làm việc theo kiểu mở file lên lấy rồi đóng lại, nó sẽ làm chậm nếu các file con nặng

Trời ơi ADO như bạn nói là cái sao hay sao, @@!:
http://www.giaiphapexcel.com/forum/...ệu-Vào-File-Đóng-Bằng-ADO&p=672793#post672793

Mọi người vui tính thật, tôi hiểu được cái này chắc tôi ...không phải là tôi nữa rồi...hix bạn doveandrose lợi hại thật..-+*/ nếu không phiền mong bạn giúp cho về bài này.

Xin cảm ơn các bạn rất nhiều.
 
Upvote 0
mình viết code dỡ lắm bạn ơi , bạn cứ kêu tên mình thì mình ráng sức vậy
Mã:
Public Sub hello()
Dim filename As String, lr As Long
filename = "'" & ThisWorkbook.Path & "\[Data.xls]Sheet1'!$C$3:$F$11"
With Sheet1
    lr = WorksheetFunction.Max(9, .[F65000].End(xlUp).Row)
    .Range("G9:G" & lr).Formula = "=VLOOKUP(F9," & filename & ",3,0)"
    .Range("H9:H" & lr).Formula = "=VLOOKUP(F9," & filename & ",4,0)"
    .Range("G9:H" & lr).Value = .Range("G9:H" & lr).Value
End With
End Sub

Oh, bạn viết còn nhanh hơn là tôi hỏi... đúng là người giỏi luôn phát hiện thấy được những người tài,,sự giới thiệu chuẩn men. ^^
Trên đó là ADO ah bạn sao trông nó khác hẳn và có phần dễ hiểu hơn cái links mà bạn viết vậy..
Đây là trường hợp file đó hoàn toàn có thể không cần mở mà có thể lấy được dữ liệu phải không ạ?
Cảm ơn bạn rất nhiều,kêu tên bạn mà vui vẻ và mang lại kết quả tốt cho tôi nữa thì đi ngủ tôi cũng kêu tên bạn.. hihi
 
Upvote 0
Oh, bạn viết còn nhanh hơn là tôi hỏi... đúng là người giỏi luôn phát hiện thấy được những người tài,,sự giới thiệu chuẩn men. ^^
Trên đó là ADO ah bạn sao trông nó khác hẳn và có phần dễ hiểu hơn cái links mà bạn viết vậy..
Đây là trường hợp file đó hoàn toàn có thể không cần mở mà có thể lấy được dữ liệu phải không ạ?
Cảm ơn bạn rất nhiều,kêu tên bạn mà vui vẻ và mang lại kết quả tốt cho tôi nữa thì đi ngủ tôi cũng kêu tên bạn.. hihi

đó hoàn toàn không phải ADO , mà chính là thực hiện thao tác Vlookup bằng code , và tôi cũng không hi vọng bạn có thể hiểu được ý nghĩa cái Link mà bạn trích dẫn , nó không thích hợp với các bạn nữ .... Chắc đêm nay tôi khó ngủ rùi , nãy giờ hắt hơi miết ....
 
Upvote 0
Thôi tôi làm như vậy, tốc độ có lẽ cũng sẽ nhanh hơn #2. Còn muốn nhanh + hay hơn nữa thì chờ bạn í vậy
Mã:
Option Explicit
Sub GPE_()
Dim I&, Kq(), DL(), Nguon(), Itm, Dic As Object
Dim CoN As Object, Data As Object, fName As String
fName = ThisWorkbook.Path & "\" & "Data.xls"
Application.ScreenUpdating = False
Set CoN = CreateObject("adodb.connection")
        CoN.Open ("provider=Microsoft.ACE.OLEDB.12.0;data source=" & _
        fName & ";mode=Read;extended properties=""Excel 12.0;hdr=no"";")
        Set Data = CoN.Execute("select * from [Sheet1$C2:F] where f1 is not null")
            If Not Data.EOF Then Worksheets("Sheet1").Range("M9").CopyFromRecordset Data
        Data.Close
        CoN.Close
With Sheet1
    DL = Range(.[M8], .[M65000].End(3)).Resize(, 4)
    Nguon = Range(.[F9], .[F65000].End(3))
    ReDim Kq(1 To UBound(Nguon), 1 To 2)
    Set Dic = CreateObject("Scripting.dictionary")
    For I = 1 To UBound(DL)
    Itm = CStr(DL(I, 1))
        If Not Dic.exists(Itm) Then
            Dic.Add CStr(DL(I, 1)), I
        End If
    Next I
    For I = 1 To UBound(Nguon)
    Itm = CStr(Nguon(I, 1))
        If Dic.exists(Itm) Then
            Kq(I, 1) = DL(Dic.Item(Itm), 3)
            Kq(I, 2) = DL(Dic.Item(Itm), 4)
        End If
    Next I
    .[G9:H65000,M9:P65000].ClearContents
    .[G9].Resize(I - 1, 2) = Kq
Set Dic = Nothing
End With
Application.ScreenUpdating = True
End Sub

Tôi không biết nói gì hơn, thật sự rất xúc động chỉ biết cảm ơn các bạn rất nhiều, các bạn thật giỏi và nhiệt tình ...
Bạn đã nói là chịu thua nhưng tôi không nghĩ như vậy và kết quả tôi đã thấy.. bạn khiêm tốn thật ^^ ,
tôi rất mog muốn được một phần như các bạn để được làm người trả lời mà không phải là người hỏi nữa.
Xin cảm ơn
 
Upvote 0
đó hoàn toàn không phải ADO , mà chính là thực hiện thao tác Vlookup bằng code , và tôi cũng không hi vọng bạn có thể hiểu được ý nghĩa cái Link mà bạn trích dẫn , nó không thích hợp với các bạn nữ .... Chắc đêm nay tôi khó ngủ rùi , nãy giờ hắt hơi miết ....

Hihi,Cảm ơn bạn!
Tôi thấy bạn cũng là nữ mờ, một nữ cao thủ vô cùng hấp dẫn và đầy sự cuốn hút trong mắt tôi và còn có thể với rất nhiều bạn khác nữa ...nếu không phải chẳng có lẽ đó là người bạn y ^^!
 
Upvote 0
Món đó coi bộ hợp hơn là món DAO ...í chứ...coi bộ đêm nay chàng ấy khó ngủ chứ lị!!!--=0--=0--=0
P/s: mà chàng làm bài này = ADO đi, tôi học hỏi cái... (tui hok biết làm nên mới chơi cách cũ chuối ở #14, thật là ngại quá đi...ah)

Bạn ơi vẫn còn tuyệt kỹ nào nữa ADO nào nữa sao... nghe có vẻ tuyệt kỹ rất lợi hại thì phải..
Nếu không ngủ được và không phiền mong bạn tiếp tục.
Ngay mai đến nơi làm việc tôi sẽ test tất cả các trường hợp, trường hợp nào nhanh tôi sẽ áp dụng bạn ah.
Còn các trường hợp khác có thể sẽ không dùng đến nhưng tôi vẫn sẽ lưu lại biết đâu sau này còn cần đến.
Chàng sao ? }}}}}}}}}}}}}}}}}}}}
 
Upvote 0
cụ Nguyễn viết "nhân tài như lá mùa thu"
tôi cứ ngơ ngác, vậy ý cụ là nhiều hay ít???
 
Upvote 0
Nhân không tài còn nhiều hơn ve sầu mùa hạ
Nhưng ở đây họ kỵ giao thiệp bằng tiếng ngoại nên im hơi.
 
Upvote 0
Xin chào các bạn
Tôi xin cảm ơn các bạn rất nhiều vì đã tham gia giúp đỡ cho tôi trong chủ đề này,
Tôi đã hì hục cả buổi sáng mới chỉ đưa được 2 đoạn code ở bài #2 và bài #11 vào để dùng thử, kết quả đã cho ra kết quả theo ý muốn tyuy nhiên quá trình cập nhật dữ liệu vẫn còn hơi chậm.
còn bài #14 tôi đưa vào file thật sau khi chạy thì code báo lỗi có thể do file Data tôi đã đặt password Open file nên mới như vậy. Tôi định gỡ thử password open ra để chạy thử nhưng thấy code ở bài #14 còn một số số chưa hiểu (ví dụ như dòng...Worksheets("Sheet1").Range("M9")...tôi không thấy nó có liên quan gì đến dữ liệu trong file kèm mà tôi đã gửi) nên tôi chưa vận dụng vào được mong các bạn thông cảm cho sự yếu kém này, tôi vẫn đang cố tìm hiểu thêm để đưa vào vận dụng.
Qua quá trình test code tôi thấy bài #2 hiện hộp thoại mở pass open file 1 lần còn bài #11 hiện hộp thoại mở pass open file 2 lần.Có thể vì điều này lên code sẽ chậm lại.

Với tôi như thế này là đã rất đạt yêu cầu rồi, tuy nhiên nếu còn cách nào khác mong các bạn chỉ giúp thêm.
Tôi xin cảm ơn các bạn rất nhiều.
 
Upvote 0
Tôi nói với bạn vài điều thế này:

1. Nếu bạn không làm được thì post file thật lên đây để mọi người code vào file thực tế cho bạn và bạn sử dụng
2. Nếu không hiểu (hay chưa hiểu) vì lý do bạn chưa đươc học: vậy từ từ tìm cách mà học ....để có thể hiểu được.
Chứ bạn nói bla bla tôi không hiểu chỗ này, chỗ kia, cần phương án tối ưu hơn, nhanh hơn...cách nào khác nữa không? Xin thưa là có vô vàng cách.
Nhưng quan trọng mọi người nói rồi bạn có hiểu không, bạn có thực sự ứng dụng được cho mình không đó mới là điều quan trọng...Và điều này làm mất rất nhiều thời giờ của bạn & của cả những người tham gia giải đáp cho bạn.

3. Bạn chưa biết gì nhiều về VBA (code) thì ai giúp cái gì...cho dù nó có cập nhật chậm (tốc độ chậm như bạn nói) đi chăng nữa (tôi nghĩ có chậm lắm cũng chỉ vài giây...). Quan trọng là đáp ứng được công việc của bạn...Thì bạn cứ sử dụng (xin đừng thắc mắc)...Một lúc nào đó bạn vững vàng về kiến thức VBA thì mới tính qua chuyện....Tốc độ....c

4. Có những cái trong code không liên quan tới dữ liệu của bạn.... nhưng đó là thủ thuật của ngừoi viết..... (cái đó rất đơn giản mà bạn chưa hiểu, thì có thể nói bạn chưa có gì hiểu biết về Vba)

5. Nếu file ban có Pass thì chạy code không hoạt động là đúng rồi. Nếu trong code có cập nhật dòng Mở Pass / Khóa Pass khi chạy code thì được

6. Túm lại: đưa file thật lên để mọi người có thể code và bạn có thể ứng dụng

Bằng không, thì không nói gì thêm nữa. Tạm biệt bạn...

Ôi,Tôi xin lỗi,..


Tôi xin lỗi bạn rất nhiều , tôi không nghĩ đã khiến cho bạn giận như vậy. Nếu biết bạn giận thế này tôi cũng không dám đòi hỏi thêm gì cả,
Sở dĩ tôi thấy kết quả đã được như ý nhưng tôi nghĩ nếu mình bấm cảm ơn các bạn mà không nói một lời gì nữa thì thấy rất áy láy...
Các bạn đã cố gắng dành thời gian để giúp tôi vì vậy tôi cũng nên thông tin đầy đủ đến cho các bạn biết tình hình mục đích là: 1 phần để các các bạn biết tôi có quan tâm đến vấn đề đó hay không? và tôi quan tâm nó đến mức nào. Mặt khác tôi thông tin lại hi vọng là để có thêm những góp ý khác,, không những cho tôi mà có thể nhiều bạn khác cũng quan tâm đến.


Thật sự tôi rất muốn đưa những cái thực tế nhất lên để được mọi người hỗ trợ đỡ mất thời gian cho tôi nhưng vì tài liệu nội bộ của cơ quan đã có qui định dù quan trọng hay không quan trọng cũng không được mang ra ngoài, thậm chí tôi muốn copy về nhà để làm việc cũng không được chứ không nói là đưa lên mạng.. rất mong bạn và mọi người thổng cảm về điều này.


Vi không hiểu gì về lập trình và để trả giá cho việc tôi không đưa file thật lên được tôi đã phải loay hoay cả buổi sáng như vậy.
Tôi xin lỗi đã khiến cho bạn buồn,tôi cảm ơn bạn rất nhiều, thật sự sau khi tham gia diễn đàn này tôi cảm thấy có phần may mắn vì đã biết đến diễn đàn và thấy có rất nhiều điều muốn hỏi và có những vấn đề không biết hỏi từ đâu hỏi như thế nào nữa ...quan trọng nhất đối với tôi lúc này là tôi rất cần những người có kiến thức như các bạn trợ giúp !
...
Xin lỗi bạn nhiều nhé,
 
Upvote 0
Lấy dữ liệu theo điều kiện từ file không mở ?

Cảm ơn các bạn rất nhiều đã trợ giúp tôi hoàn thành câu hỏi bài #1 và tôi đã áp dụng thành công,
Giờ tôi có thêm một trường hợp nữa về lấy dữ liệu từ file Data vào file LayDuLieu mà không cần mở file Data và điều kiện cũng khác so với bài 1 dường như bài này sẽ khó khăn hơn. Câu hỏi tôi cũng đã nêu trong file kèm.
Tôi rất mong lại nhận được thêm những sự giúp đỡ từ các bạn.
Xin cảm ơn các bạn rất nhiều.Hix hỏi nhiều thấy ngại mà không hỏi thì sẽ rất khó khăn...-\\/.
 

File đính kèm

Upvote 0
Ôi,Tôi xin lỗi,..


Tôi xin lỗi bạn rất nhiều , tôi không nghĩ đã khiến cho bạn giận như vậy. Nếu biết bạn giận thế này tôi cũng không dám đòi hỏi thêm gì cả,
Sở dĩ tôi thấy kết quả đã được như ý nhưng tôi nghĩ nếu mình bấm cảm ơn các bạn mà không nói một lời gì nữa thì thấy rất áy láy...
Các bạn đã cố gắng dành thời gian để giúp tôi vì vậy tôi cũng nên thông tin đầy đủ đến cho các bạn biết tình hình mục đích là: 1 phần để các các bạn biết tôi có quan tâm đến vấn đề đó hay không? và tôi quan tâm nó đến mức nào. Mặt khác tôi thông tin lại hi vọng là để có thêm những góp ý khác,, không những cho tôi mà có thể nhiều bạn khác cũng quan tâm đến.


Thật sự tôi rất muốn đưa những cái thực tế nhất lên để được mọi người hỗ trợ đỡ mất thời gian cho tôi nhưng vì tài liệu nội bộ của cơ quan đã có qui định dù quan trọng hay không quan trọng cũng không được mang ra ngoài, thậm chí tôi muốn copy về nhà để làm việc cũng không được chứ không nói là đưa lên mạng.. rất mong bạn và mọi người thổng cảm về điều này.


Vi không hiểu gì về lập trình và để trả giá cho việc tôi không đưa file thật lên được tôi đã phải loay hoay cả buổi sáng như vậy.
Tôi xin lỗi đã khiến cho bạn buồn,tôi cảm ơn bạn rất nhiều, thật sự sau khi tham gia diễn đàn này tôi cảm thấy có phần may mắn vì đã biết đến diễn đàn và thấy có rất nhiều điều muốn hỏi và có những vấn đề không biết hỏi từ đâu hỏi như thế nào nữa ...quan trọng nhất đối với tôi lúc này là tôi rất cần những người có kiến thức như các bạn trợ giúp !
...
Xin lỗi bạn nhiều nhé,

file excel bị đặt Password Open FIle thì làm sao mà lấy được nội dung , trừ khi bạn là hacker . Bill mà cho phép điều này chắc giờ thế giới chả ai dám xài Excel
 
Upvote 0
file excel bị đặt Password Open FIle thì làm sao mà lấy được nội dung , trừ khi bạn là hacker . Bill mà cho phép điều này chắc giờ thế giới chả ai dám xài Excel

Cảm ơn bạn đã quan tâm, về vấn đề pass open file thôi coi như là không có nữa vậy bạn ah.
Tôi sẽ chấp nhận bỏ nó miễn sao công việc đỡ vất vả.
Ngoài ra nếu biết passopen rồi mình có thể viết luôn vào code được không bạn , ví dụ pass file open là : 123 chẳng hạn
Thôi các bạn giúp được cho tôi trường hợp không có pass , với tôi là đủ lắm rồi..
nếu có thêm trường hợp tự điền pass nữa thì sẽ đỡ hơn nhưng không sao.
Tôi không hiểu gì nên đôi lúc hỏi có thể sẽ khiến các bạn đọc cảm thấy khó chịu, mong các bạn thông cảm được phần nào ..
XIn cảm ơn rất nhiều.
 
Upvote 0
Mã:
Option Explicit
Sub GPE()
Dim CoN As Object, Data As Object, fName As String
fName = ThisWorkbook.Path & "\" & "Data.xls"
Application.ScreenUpdating = False
Set CoN = CreateObject("adodb.connection")
        CoN.Open ("provider=Microsoft.ACE.OLEDB.12.0;data source=" & _
        fName & ";mode=Read;extended properties=""Excel 12.0;hdr=no"";")
        Set Data = CoN.Execute("select * from [Sheet1$C2:F] where f1 is not null")
            If Not Data.EOF Then Worksheets("Sheet1").Range("M9").CopyFromRecordset Data
        Data.Close
        CoN.Close
With Sheet1
    .Range("G9:K" & .[F65000].End(3).Row).Value = "=SUMIFS(R9C15:R1000C15,R9C13:R1000C13,RC6,R9C14:R1000C14,R7C)"
    .Range("G9:K" & .[F65000].End(3).Row).Value = .Range("G9:K" & .[F65000].End(3).Row).Value
    .Range("M9:P65000").ClearContents
End With
Application.ScreenUpdating = True
End Sub
nếu bài này bố trí theo kiểu dọc thì khỏi cần đưa dữ liệu ra vùng trung gian làm gì cho mệt, sử dụng các câu lệnh group by thì nó ra tuốt tuồn tuộc
vì tôi làm kỵ làm việc với ADO mà tiêu đề có chữ tiếng việt, nên trong file data tôi có chỉnh lại 1 số thông số, và trong file kết quả tôi bố trí lại theo kiểu dọc( chú ý code này tôi viết theo kiểu có thể lấy dữ liệu trên nhiều file)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
nếu bài này bố trí theo kiểu dọc thì khỏi cần đưa dữ liệu ra vùng trung gian làm gì cho mệt, sử dụng các câu lệnh group by thì nó ra tuốt tuồn tuộc
vì tôi làm kỵ làm việc với ADO mà tiêu đề có chữ tiếng việt, nên trong file data tôi có chỉnh lại 1 số thông số, và trong file kết quả tôi bố trí lại theo kiểu dọc( chú ý code này tôi viết theo kiểu có thể lấy dữ liệu trên nhiều file)
haiz , bố trí dữ liệu kiểu gì là Quyền của người dùng , trừ khi người dùng bố trí quá phản khoa học , ở đây tôi thấy bố trí như file LayDuLieu như ban đầu chả có gì gọi là phản khoa học cả
Chuyện tên Cột có xài được tiếng Việt có dấu hay không ta bàn sau
Bây giờ tôi mời anh vào đây giao lưu : làm sao bố trí file LayDuLieu và Data y như ban đầu và trong 1 lần truy vấn duy nhất mà chỉ cần .CopyFromRecordset là ra luôn nội dung vùng G9:K14 mà tác giả đã làm sẵn bằng SUMIFS ?
 
Upvote 0
haiz , bố trí dữ liệu kiểu gì là Quyền của người dùng , trừ khi người dùng bố trí quá phản khoa học , ở đây tôi thấy bố trí như file LayDuLieu như ban đầu chả có gì gọi là phản khoa học cả
Chuyện tên Cột có xài được tiếng Việt có dấu hay không ta bàn sau
Bây giờ tôi mời anh vào đây giao lưu : làm sao bố trí file LayDuLieu và Data y như ban đầu và trong 1 lần truy vấn duy nhất mà chỉ cần .CopyFromRecordset là ra luôn nội dung vùng G9:K14 mà tác giả đã làm sẵn bằng SUMIFS ?
Không biết trong excel có dạng truy vấn như crosstab query như access không?
 
Upvote 0
Mã:
Option Explicit
Sub GPE()
Dim CoN As Object, Data As Object, fName As String
fName = ThisWorkbook.Path & "\" & "Data.xls"
Application.ScreenUpdating = False
Set CoN = CreateObject("adodb.connection")
        CoN.Open ("provider=Microsoft.ACE.OLEDB.12.0;data source=" & _
        fName & ";mode=Read;extended properties=""Excel 12.0;hdr=no"";")
        [COLOR=#ff0000]Set Data = CoN.Execute("select * from [Sheet1$C2:F] where f1 is not null")[/COLOR]
            [COLOR=#800080]If Not Data.EOF Then Worksheets("Sheet1").Range("M9").CopyFromRecordset Data[/COLOR]
        Data.Close
        CoN.Close
With Sheet1
    .Range("G9:K" & .[F65000].End(3).Row).Value = "[COLOR=#0000ff]=SUMIFS(R9C15:R1000C15,R9C13:R1000C13,RC6,R9C14:R1000C14,R7C)[/COLOR]"
    .Range("G9:K" & .[F65000].End(3).Row).Value = .Range("G9:K" & .[F65000].End(3).Row).Value
    [COLOR=#800080].Range("M9:P65000").ClearContents[/COLOR]
End With
Application.ScreenUpdating = True
End Sub

Cảm ơn bạn rất nhiều, người thường xuyên mang đến điều bất ngờ cho tôi.
Code cho file thử đính kèm cho ra kết quả đã đúng với ý tôi rồi.
Tôi thấy code bài này rất giống #14 sáng nay khi tôi cũng đã đưa vào áp dụng cho file thật và bỏ cả password open file ra và loay hoay mãi vẫn chưa khắc phục được cái lỗi dòng màu đỏ,giờ nhìn code này lại thấy thêm vùng màu xanh hơi khó hiểu 1 chút ...
Tôi mong bạn đừng giận thật sự tôi chỉ muốn hiểu một chút nào đó để có thể chủ động sửa chữa được thôi. Giả sử nếu tôi có đưa được file thật lên đi nữa thì tôi sẽ không phải mất thời gian loay hoay hay làm phiền các bạn nhiều như thế này, nhưng sau này thêm dòng thêm cột hay thay đổi gì đó ... lỗi xảy ra tôi biết tìm các bạn ở đâu hay có thể kêu ai được đây.

Nếu không phiền mong bạn có thể giải thích giúp tôi những phần tôi tô màu được không ạ?
Hay bạn có thể viết giúp tôi đoạn code giống như bài #2 mà bạn đã làm được không ạ vì tôi đã áp dụng được bài này rồi bạn ah.

Hix tôi kém cỏi quá cứ nghĩ rằng mọi thứ đơn giản cứ hỏi và có bài trả lời thì sẽ nhẹ nhàng ai ngờ sau khi nhận được bài trả lời lại càng muốn hỏi thêm nhiều vấn đề liên quan khác nữa thì mới xong...nếu có chỗ nào tôi không phải mong các bạn đừng giận.

Tôi xin cảm ơn và rất trân trọng những bài viết của các bạn dành cho tôi.
 
Upvote 0
Tiếp theo cho ra lò code ADO + DIC. Không phải dùng Hàm Sumifs nữa.
Mã:
Sub GPE_()
Dim CoN As Object, Data As Object, fName As String
fName = ThisWorkbook.Path & "\" & "Data.xls"
Application.ScreenUpdating = False
Set CoN = CreateObject("adodb.connection")
    CoN.Open ("provider=Microsoft.ACE.OLEDB.12.0;data source=" & _
    fName & ";mode=Read;extended properties=""Excel 12.0;hdr=no"";")
    Set Data = CoN.Execute("select * from [Sheet1$C2:F] where f1 is not null")
        If Not Data.EOF Then Worksheets("Sheet1").Range("M9").CopyFromRecordset Data
    Data.Close
    CoN.Close
Dim Dic As Object, sArr, dArr, Arr, I&, J&, K&, Tem
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet1
    sArr = Range(.[F9], .[F65000].End(3)).Value
    ReDim dArr(1 To UBound(sArr, 1), 1 To 5)
    For I = 1 To UBound(sArr, 1)
        Tem = sArr(I, 1)
        If Not Dic.Exists(Tem) Then
            K = K + 1
            Dic.Add Tem, K
        End If
    Next I
    sArr = Range(.[M9], .[M65000].End(3)).Resize(, 4).Value
    Arr = .Range("G7:K7").Value
For I = 1 To UBound(sArr, 1)
    Tem = sArr(I, 1)
    If Dic.Exists(Tem) Then
        For J = 1 To UBound(Arr, 2)
            If sArr(I, 2) = Arr(1, J) Then
                dArr(Dic.Item(Tem), J) = dArr(Dic.Item(Tem), J) + sArr(I, 3)
            End If
        Next J
    End If
Next I
    .Range("G9").Resize(K, 5).ClearContents
    .Range("G9").Resize(K, 5).Value = dArr
    .Range("M9:P65000").ClearContents
End With
Set Dic = Nothing
End Sub

hihi, tôi vừa trả lời xong thì đã thấy thêm bài nữa của bạn,
bài này để ngày mai tôi vận dụng thử rồi thông tin lại cho bạn sau nhé.
bạn dễ thương quá , tôi cứ tưởng bạn sẽ không quay lại nữa hihi
cảm ơn bạn nhiều lắm..

 
Upvote 0
Tiếp theo cho ra lò code ADO + DIC. Không phải dùng Hàm Sumifs nữa.
Mã:
Sub GPE_()
Dim CoN As Object, Data As Object, fName As String
fName = ThisWorkbook.Path & "\" & "Data.xls"
Application.ScreenUpdating = False
Set CoN = CreateObject("adodb.connection")
    CoN.Open ("provider=Microsoft.ACE.OLEDB.12.0;data source=" & _
    fName & ";mode=Read;extended properties=""Excel 12.0;hdr=no"";")
    Set Data = CoN.Execute("select * from [Sheet1$C2:F] where f1 is not null")
        If Not Data.EOF Then Worksheets("Sheet1").Range("M9").CopyFromRecordset Data
    Data.Close
    CoN.Close
Dim Dic As Object, sArr, dArr, Arr, I&, J&, K&, Tem
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet1
    sArr = Range(.[F9], .[F65000].End(3)).Value
    ReDim dArr(1 To UBound(sArr, 1), 1 To 5)
    For I = 1 To UBound(sArr, 1)
        Tem = sArr(I, 1)
        If Not Dic.Exists(Tem) Then
            K = K + 1
            Dic.Add Tem, K
        End If
    Next I
    sArr = Range(.[M9], .[M65000].End(3)).Resize(, 4).Value
    Arr = .Range("G7:K7").Value
For I = 1 To UBound(sArr, 1)
    Tem = sArr(I, 1)
    If Dic.Exists(Tem) Then
        For J = 1 To UBound(Arr, 2)
            If sArr(I, 2) = Arr(1, J) Then
                dArr(Dic.Item(Tem), J) = dArr(Dic.Item(Tem), J) + sArr(I, 3)
            End If
        Next J
    End If
Next I
    .Range("G9").Resize(K, 5).ClearContents
    .Range("G9").Resize(K, 5).Value = dArr
    .Range("M9:P65000").ClearContents
End With
Set Dic = Nothing
End Sub

hihi, tôi vừa trả lời xong thì đã thấy thêm bài nữa của bạn,
bài này để ngày mai tôi vận dụng thử rồi thông tin lại cho bạn sau nhé.
bạn dễ thương quá , tôi cứ tưởng bạn sẽ không quay lại nữa hihi
cảm ơn bạn nhiều lắm..
 
Upvote 0
nếu bài này bố trí theo kiểu dọc thì khỏi cần đưa dữ liệu ra vùng trung gian làm gì cho mệt, sử dụng các câu lệnh group by thì nó ra tuốt tuồn tuộc
vì tôi làm kỵ làm việc với ADO mà tiêu đề có chữ tiếng việt, nên trong file data tôi có chỉnh lại 1 số thông số, và trong file kết quả tôi bố trí lại theo kiểu dọc( chú ý code này tôi viết theo kiểu có thể lấy dữ liệu trên nhiều file)

Xin cảm ơn bạn đã giúp đỡ và góp ý,
về việc thay đổi cấu trúc dữ liệu hiện giờ với tôi quả thực là điều rất khó vì tôi không có quyền quyết định và hơn nữa là file này cũng có liên kết với các file khác nếu mà thay đổi được như bạn gợi ý thì sẽ mất rất nhiều thời gian bạn ah.
Tôi cũng sẽ lưu ý góp ý này của bạn để rút kinh nghiệm cho những file sau này.

Xin trân trọng cảm ơn bạn rất nhiều.
 
Upvote 0
mình viết code dỡ lắm bạn ơi , bạn cứ kêu tên mình thì mình ráng sức vậy
...

haiz , bố trí dữ liệu kiểu gì là Quyền của người dùng , trừ khi người dùng bố trí quá phản khoa học , ở đây tôi thấy bố trí như file LayDuLieu như ban đầu chả có gì gọi là phản khoa học cả
Chuyện tên Cột có xài được tiếng Việt có dấu hay không ta bàn sau
Bây giờ tôi mời anh vào đây giao lưu : làm sao bố trí file LayDuLieu và Data y như ban đầu và trong 1 lần truy vấn duy nhất mà chỉ cần .CopyFromRecordset là ra luôn nội dung vùng G9:K14 mà tác giả đã làm sẵn bằng SUMIFS ?

Bạn doveandrose thân mến ơi, ... ,Bạn doveandrose thân mến ơi,
Thấy hấp dẫn quá bạn có thể bớt chút thời gian được không ạ? ...
Bạn doveandrose thân mến ơi!!!
 
Upvote 0
em nghiên cứu mà chưa có làm được , anh giúp em với
==================================
sử dụng những truy vấn đơn giản là đủ rồi
Mã:
Public Sub hello()
Dim cn As Object
Set cn = CreateObject("adodb.Connection")
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\Data.xls" & _
    ";Extended Properties=""Excel 12.0;HDR=NO;ReadOnly=true"";"
With Sheet1
    .Range("G9").CopyFromRecordset cn.Execute("select b.f20,b.f21,b.f22,b.f23,b.f24 from " & _
    " [" & ThisWorkbook.FullName & ";hdr=no;ReadOnly=true].[Sheet1$F9:F] a " & _
    " left join (select f1,sum(fG) as f20,sum(fH) as f21,sum(fI) as f22,sum(fJ) as f23,sum(fK) as f24 " & _
    " from (select f1,iif(f2='" & .[G7] & "',f3,null) as fG, " & _
    " iif(f2='" & .[H7] & "',f3,null) as fH, iif(f2='" & .[I7] & "',f3,null) as fI, " & _
    " iif(f2='" & .[J7] & "',f3,null) as fJ, iif(f2='" & .[K7] & "',f3,null) as fK " & _
    " from [Sheet1$C3:E]) group by f1) b on a.f1 = b.f1")
End With
cn.Close
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Mấy bài đơn giản này có cần phải vác vây búa to thế không?
Nghiên cứu chi mấy thứ đó rồi cũng cho vào quên lãng. Dùng ADO thì đúng rồi nhưng chỉ cần cách phổ thông. Lấy ra mảng dữ liệu rồi muốn xử kiểu gì mà không được. Dùng Dic thỉ chỉ là nhấp nháy là có kết quả.
 
Upvote 0
em nghiên cứu mà chưa có làm được , anh giúp em với
==================================
sử dụng những truy vấn đơn giản là đủ rồi
Mã:
Public Sub hello()
Dim cn As Object
Set cn = CreateObject("adodb.Connection")
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\Data.xls" & _
    ";Extended Properties=""Excel 12.0;HDR=NO;ReadOnly=true"";"
With Sheet1
    .Range("G9").CopyFromRecordset cn.Execute("select b.f20,b.f21,b.f22,b.f23,b.f24 from " & _
    " [" & ThisWorkbook.FullName & ";hdr=no;ReadOnly=true].[Sheet1$F9:F] a " & _
    " left join (select f1,sum(fG) as f20,sum(fH) as f21,sum(fI) as f22,sum(fJ) as f23,sum(fK) as f24 " & _
    " from (select f1,iif(f2='" & .[G7] & "',f3,null) as fG, " & _
    " iif(f2='" & .[H7] & "',f3,null) as fH, iif(f2='" & .[I7] & "',f3,null) as fI, " & _
    " iif(f2='" & .[J7] & "',f3,null) as fJ, iif(f2='" & .[K7] & "',f3,null) as fK " & _
    " from [Sheet1$C3:E]) group by f1) b on a.f1 = b.f1")
End With
cn.Close
End Sub
CŨNG MUỐN theo bạn hoc ADO lắm nhưng nhìn thấy code này tịt luôn ...cố đọc tới lui Tịt vẫn hoàn Tịt.. --=0--=0 mong một ngày nào đó mình sẽ học được khoãng 20-30 % ADO của bạn
 
Upvote 0
CŨNG MUỐN theo bạn hoc ADO lắm nhưng nhìn thấy code này tịt luôn ...cố đọc tới lui Tịt vẫn hoàn Tịt.. --=0--=0 mong một ngày nào đó mình sẽ học được khoãng 20-30 % ADO của bạn
cái này gọi là gần chùa gọi bụt bằng anh đó Kiều Mạnh . trên địa bàn của Kiều Mạnh có nhân vật lừng danh nào thì Kiều Mạnh biết rồi đó . kiếm tôi làm gì .
 
Upvote 0
cái này gọi là gần chùa gọi bụt bằng anh đó Kiều Mạnh . trên địa bàn của Kiều Mạnh có nhân vật lừng danh nào thì Kiều Mạnh biết rồi đó . kiếm tôi làm gì .
vấn đề là mình muốn tu luyện code công của các đại môn phái ...xong chế ra một tuyệt kỷ của riêng mình thôi....,,,,,,,
 
Lần chỉnh sửa cuối:
Upvote 0
Đọc hoài mà hok có hiểu cái đoạn đỏ đỏ. Bạn doveandrose có thể giải thích thêm tí hok? Thấy có F tưởng là (Fields) gì đó. Mà lại có thêm chữ b.F nữa? khó hiểu quá. b. ở đây là lệnh gì vậy?
Với lại bạn giải thích trong code của bạn đoạn nào là xác định cột cần lấy dữ liệu ở file Data vậy? Nhìn đỏ con mắt mà hok có hiểu... Hic hic...món này khó nuốt quá ạ!

Cảm ơn!
Mấy cái b.f1..... Là truy xuất các trường từ bảng b, ví dụ b.f1 là truy xuất cột đầu tiên, b.f3 là truy xuất cột thứ 3, tui thì không khoái mấy cái f đó, tôi khoái gọi tên hơn
 
Upvote 0
Ado là code lười biến khá đơn giản, chỉ cần biết mấy quy tắc truy vấn và biết kết nối xem như là xong( đủ xài) học cái môn này khó nhất là thiết CSDL, mà trên diễn đàn hầu như không ai đụng đến, xem như phần khó này bỏ qua, như vậy ADO học để ứng dụng trên đây rất đơn giản
 
Upvote 0
Ado là code lười biến khá đơn giản, chỉ cần biết mấy quy tắc truy vấn và biết kết nối xem như là xong( đủ xài) học cái môn này khó nhất là thiết CSDL, mà trên diễn đàn hầu như không ai đụng đến, xem như phần khó này bỏ qua, như vậy ADO học để ứng dụng trên đây rất đơn giản

Đã muón nói chuyện căn bản thì nói cho đúng căn bản.
ADO là đối tượng dùng để lấy dữ liệu. Nó có thể lấy dữ liệu bất cứ loại nào, miễn là ở dạng bảng (cột và hàng ngăn nắp).
Vì một bảng trong Excel có thể xếp theo cột và hàng ngăn nắp cho nên MS cho phép ADO đọc bảng Excel qua công cụ Access. Lưu ý, từ "công cụ Access", tôi sẽ giải thích sau.
Khi nói "dùng ADO để lấy dữ liệu ở file đang đóng" chỉ có nghĩa là file cần phải mở bằng Excel. Chứ trên thực tế, khi kết nối thì ADO vẫn phải mở nó ra để đọc.
Vì kết nối vào file Excel được truy vấn qua công cụ Access cho nên lệnh truy vấn bắt buộc phải dùng ngôn ngữ SQL của Access. Tôi nhấn mạnh diểm này là vì Access SQL không phải là ngôn ngữ tiêu chuẩn chung. Bạn nào nói dùng cái này để học SQL là học sai đường.

Nếu bạn dùng ADO để lấy dữ liệu từ các dạng CSDL khác thì phải theo luật của loại csdl đó. Ví dụ bạn truy vấn MS SQL Server thì phải dùng t-SQL, truy vấn Oracle thì phải dùng SQL-Plus.
 
Upvote 0
Đọc hoài mà hok có hiểu cái đoạn đỏ đỏ. Bạn doveandrose có thể giải thích thêm tí hok? Thấy có F tưởng là (Fields) gì đó. Mà lại có thêm chữ b.F nữa? khó hiểu quá. b. ở đây là lệnh gì vậy?
Với lại bạn giải thích trong code của bạn đoạn nào là xác định cột cần lấy dữ liệu ở file Data vậy? Nhìn đỏ con mắt mà hok có hiểu... Hic hic...món này khó nuốt quá ạ!

Cảm ơn!

chữ b là tên 1 cái bảng (đã đặt) và f20 , f21 , f22 ... là tên các cột (đã đặt) trong câu truy vấn
bài này nói là sử dụng những phép truy vấn đơn giản , nhưng để viết được những cái đơn giản ấy thì phải có chút nội công , bằng chứng là rượu mời chưa chắc người ta đã uống ....
qua cách hỏi của bạn thì tôi biết bạn chưa đi được đến chỗ đó đâu , nên việc giải thích lúc này là bất khả thi , thông cảm
những cái này với người sử dụng excel bình thường cũng khó học vì nó có giống VBA đâu . bạn không cần phải gấp , cứ những cái đơn giản nhất từ từ đi lên .
 
Upvote 0
Đọc hoài mà hok có hiểu cái đoạn đỏ đỏ. Bạn doveandrose có thể giải thích thêm tí hok? Thấy có F tưởng là (Fields) gì đó. Mà lại có thêm chữ b.F nữa? khó hiểu quá. b. ở đây là lệnh gì vậy?
Với lại bạn giải thích trong code của bạn đoạn nào là xác định cột cần lấy dữ liệu ở file Data vậy? Nhìn đỏ con mắt mà hok có hiểu... Hic hic...món này khó nuốt quá ạ!

Cảm ơn!
Hình như kỳ kỳ. Nếu bắt đầu từ trường 1 sao là
b.f20..... Nếu không tính tiêu đề thì File Data phải bắt đầu từ cột 3
chứ....nhỉ?
Tại tác giả code theo trường phái code lệnh SQL trưc tiếp cho nên hơi khó đọc code.
Theo trường phái của tôi thì viết cái câu SQL mẫu rồi dùng hàm replace thay thế các tham số vào. Chủ trương là dễ đọc và dễ xem giải thuật của câu lệnh.

Trong code dưới đây, bạn để ý tôi bôi đỏ đậm hai dấu ngoặc. Cặp ngoặc ấy dùng để gói một câu sub query con. Cái kết quả của câu subquery con này được đặt tên là b (cũng bôi đỏ đậm). Bên trong cái subquery con này, các trường lấy ra được đặt tên lại là f20, f21, ...Với cách đặt tên này, bên ngoài subquery, các trường này được nhắc tới bằng tên chúng được đặt. Tiền tố b với dấu chấm đi trước chúng (b.f20) chỉ là tiền tố xác định tầm vực. Như vậy, b.F20 có nghĩa là "cái trường được đặt tên là f20 trong cái subquery tên là b"

chú thêm: sở dĩ tác giả đặt tên f20, f21,... là vì các trường này là kết quả của hàm Sum, bắt buộc phải đăt tên là vì chính chúng không có tên.
Sở dĩ tác giả đặt tên b cho subquery con là vì theo luật chung, subquery phải được đặt tên để có cơ sở mà làm tiền tố cho các trường của chúng.

Mã:
Public Sub hello()
Dim cn As Object
Set cn = CreateObject("adodb.Connection")
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\Data.xls" & _
    ";Extended Properties=""Excel 12.0;HDR=NO;ReadOnly=true"";"
With Sheet1
    .Range("G9").CopyFromRecordset cn.Execute("select [COLOR=#ff0000][B]b.[/B][/COLOR][COLOR=#0000ff]f20[/COLOR],[COLOR=#ff0000][B]b.[/B][/COLOR][COLOR=#0000ff]f21[/COLOR],[COLOR=#ff0000][B]b.[/B][/COLOR][COLOR=#0000ff]f22[/COLOR],[B][COLOR=#ff0000]b.[/COLOR][/B][COLOR=#0000ff]f23[/COLOR],[B][COLOR=#ff0000]b.[/COLOR][/B][COLOR=#0000ff]f24[/COLOR] from " & _
    " [" & ThisWorkbook.FullName & ";hdr=no;ReadOnly=true].[Sheet1$F9:F] a " & _
    " left join [COLOR=#ff0000][B]([/B][/COLOR] select f1,sum(fG) [COLOR=#0000ff]as f20[/COLOR],sum(fH) [COLOR=#0000ff]as f21[/COLOR],sum(fI) [COLOR=#0000ff]as f22[/COLOR],sum(fJ) [COLOR=#0000ff]as f23[/COLOR],sum(fK) [COLOR=#0000ff]as f24[/COLOR] " & _
    " from (select f1,iif(f2='" & .[G7] & "',f3,null) as fG, " & _
    " iif(f2='" & .[H7] & "',f3,null) as fH, iif(f2='" & .[I7] & "',f3,null) as fI, " & _
    " iif(f2='" & .[J7] & "',f3,null) as fJ, iif(f2='" & .[K7] & "',f3,null) as fK " & _
    " from [Sheet1$C3:E]) group by f1 [B][COLOR=#ff0000]) b[/COLOR][/B] on a.f1 = b.f1")
End With
cn.Close
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Xin lỗi, thỉnh thoảng cái browser của tôi có vấn đề khi mark up. Đã sửa
 
Upvote 0
Ado là code lười biến khá đơn giản, chỉ cần biết mấy quy tắc truy vấn và biết kết nối xem như là xong( đủ xài) học cái môn này khó nhất là thiết CSDL, mà trên diễn đàn hầu như không ai đụng đến, xem như phần khó này bỏ qua, như vậy ADO học để ứng dụng trên đây rất đơn giản

Không phải lười biếng thầy ạ, mà ADO chỉ là công cụ, SQL mới là ngôn ngữ mọi người cần học khi muốn vận dụng uyển chuyển vào dữ liệu Excel, thường là người từ Excel sang thì lại không quen với SQL thì thấy nó khó thôi. Còn SQL sinh ra để giúp dễ dàng truy xuất và xử lý cơ sở dữ liệu.
lưu ý chủ topic: không có code nào có thể lấy dữ liệu của file đóng nhé. Mọi người hay nhầm khái niệm ADO giúp mở file đóng là sai, vì kiểu gì cũng phải mở (kết nối) file mới lấy được dữ liệu (chỉ có không mở bằng Excel mà thôi)
 
Lần chỉnh sửa cuối:
Upvote 0
Mấy bài đơn giản này có cần phải vác vây búa to thế không?
Nghiên cứu chi mấy thứ đó rồi cũng cho vào quên lãng. Dùng ADO thì đúng rồi nhưng chỉ cần cách phổ thông. Lấy ra mảng dữ liệu rồi muốn xử kiểu gì mà không được. Dùng Dic thỉ chỉ là nhấp nháy là có kết quả.

Xin cảm ơn bạn rất nhiều vì đã tham gia vào chủ để của tôi,
Nếu bạn có cách nào đơn giản hơn mong được bạn chỉ dẫn ạ, thật là mấy hôm nay trong chủ đề này tôi đã nghe nhiều về ADO quá mà muốn xem nó như thế nào đến lúc thấy rồi thì không hiểu được một chữ nào cả,, hix đến cả những cao thủ mà tồi ngưỡng mộ cũng còn nêu ra nhiều câu hỏi bỡ ngỡ thì quả thực đối với tôi nó xa với quá.
Nên tôi cũng không dám hỏi gì khi thấy ADO cả mà hỏi thì cũng không biết hỏi gì nữa..
Rất mong được bạn giúp đỡ cho bài viết này,
Có nhiều bài viết sẽ khiến cho tôi có thêm nhiều sự lựa chọn và trước hết tôi sẽ chọn những gì đơn giản nhất để cho tôi dễ vận dụng và chủ động hơn.
******************

Tôi thấy vui vì mới một ngày không vào mà đã có rất nhiều bài viết trong chủ đề này, hiện tại kiến thức của tôi về lập trình mới chỉ là con số 0 nên cũng không thể đáp lại hết được những bài viết của các bạn được rất mong được các bạn thông cảm.
Nếu không phiền tôi rất mong nhận được nhiều sự hỗ trợ của các bạn. Thậm trí cả những bạn cũng đang chưa biết gì về lập trình như tôi có thể tham gia chủ đề này để học hỏi qua đó hi vọng tôi sẽ hiểu thêm được 1 chút ít về lĩnh vực nào đó.

Trân trọng và cảm ơn các bạn thật nhiều.
 
Upvote 0
em nghiên cứu mà chưa có làm được , anh giúp em với
==================================
sử dụng những truy vấn đơn giản là đủ rồi
Mã:
Public Sub hello()
Dim cn As Object
Set cn = CreateObject("adodb.Connection")
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\Data.xls" & _
    ";Extended Properties=""Excel 12.0;HDR=NO;ReadOnly=true"";"
With Sheet1
    .Range("G9").CopyFromRecordset cn.Execute("select b.f20,b.f21,b.f22,b.f23,b.f24 from " & _
    " [" & ThisWorkbook.FullName & ";hdr=no;ReadOnly=true].[Sheet1$F9:F] a " & _
    " left join (select f1,sum(fG) as f20,sum(fH) as f21,sum(fI) as f22,sum(fJ) as f23,sum(fK) as f24 " & _
    " from (select f1,iif(f2='" & .[G7] & "',f3,null) as fG, " & _
    " iif(f2='" & .[H7] & "',f3,null) as fH, iif(f2='" & .[I7] & "',f3,null) as fI, " & _
    " iif(f2='" & .[J7] & "',f3,null) as fJ, iif(f2='" & .[K7] & "',f3,null) as fK " & _
    " from [Sheet1$C3:E]) group by f1) b on a.f1 = b.f1")
End With
cn.Close
End Sub

Bạn doveandrose ơi cảm ơn bạn rất nhiều!^^ ADO thứ thiệt đó sao?.. hix khủng khiếp quá cứ tưởng tiếng Thái hay tiếng Lào **~**-+*/ ...

Mấy cái b.f1..... Là truy xuất các trường từ bảng b, ví dụ b.f1 là truy xuất cột đầu tiên, b.f3 là truy xuất cột thứ 3, tui thì không khoái mấy cái f đó, tôi khoái gọi tên hơn

Bạn doveandrose ơi như bạn phihndhsp gọi theo tên có đơn giản và dễ hiểu không vậy.
Nếu còn cách viết cũng dùng ADO gì đó mà dễ hiểu hơn mong bạn chỉ dẫn cho ạ .. Bạn doveandrose ơi... -\\/.-\\/.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn doveandrose ơi cảm ơn bạn rất nhiều!^^ ADO thứ thiệt đó sao?.. hix khủng khiếp quá cứ tưởng tiếng Thái hay tiếng Lào **~**-+*/ ...



Bạn doveandrose ơi như bạn phihndhsp gọi theo tên có đơn giản và dễ hiểu không vậy.
Nếu còn cách viết cũng dùng ADO gì đó mà dễ hiểu hơn mong bạn chỉ dẫn cho ạ .. Bạn doveandrose ơi... -\\/.-\\/.

xin lỗi chúng tôi đã cố gắng hết sức ...
mình code cho chạy đúng theo yêu cầu của bạn là cảm thấy mừng rồi , chứ bây giờ còn phải đi code làm sao cho người không biết gì về VBA có thể hiểu được nữa thì mình chưa đủ khả năng .
 
Upvote 0
xin lỗi chúng tôi đã cố gắng hết sức ...
mình code cho chạy đúng theo yêu cầu của bạn là cảm thấy mừng rồi , chứ bây giờ còn phải đi code làm sao cho người không biết gì về VBA có thể hiểu được nữa thì mình chưa đủ khả năng .

doveandrose thương mến!
Bạn nói xin lỗi, tôi cảm thấy rất áy láy.
Người phải nói lời xin lỗi là tôi mới phải, tôi đã làm khó bạn rồi.. xin lỗi bạn nhiều nhiều.

Qua những lời này tôi đã hiểu khó khăn phần nào từ bạn rồi , ngay cả những người mà trong mắt của tôi họ là người có kiến thức rất chuyên sâu trong lĩnh vực này mà còn nói là mù tịt và muốn giải thích nữa là.. theo tôi hiểu sự khó khăn này là nếu muốn giải thích 1 vấn đề dù là rất nhỏ nhưng sẽ kéo theo một lô một lốc những chuỗi vấn đề khác như thuật toán gì đó, rồi là cú pháp , đại loại là sẽ phải nói lại từ đầu rất dài và rất dài ... có phải như vậy không ạ?

Tôi mới tiếp xúc nên đôi khi hỏi hơi kỳ cục và khó chịu mong bạn và mọi người đừng để ý bạn,
Tôi muốn hỏi và muốn học rất nhiều thứ nữa từ bạn và mọi người.
Rất mong bạn và mọi người thường xuyên theo dõi và trợ giúp cho tôi.

Buổi tối vui vẻ bạn nhé!
Trân trọng cảm ơn bạn thật nhiều.
 
Upvote 0
Không phải lười biếng thầy ạ, mà ADO chỉ là công cụ, SQL mới là ngôn ngữ mọi người cần học khi muốn vận dụng uyển chuyển vào dữ liệu Excel, thường là người từ Excel sang thì lại không quen với SQL thì thấy nó khó thôi. Còn SQL sinh ra để giúp dễ dàng truy xuất và xử lý cơ sở dữ liệu.
...

(A)DO là Data Object. Mục đích của đối tượng là che đi những phần phức tạp, giúp cho công việc dễ dàng, làm cầu nối giữa dữ liệu và người/vật cần dữ liệu. Có cái cầu nối tốt thì đỡ được nhiều giai đoạn làm việc. Trên một quan điểm nào đó, người ta có quyền nói "làm việc ít đi có nghĩa là lười biếng", tôi không cãi làm chi cho mệt. Bời vì, chủ trương tôi nếu lười biếng mà xong được việc thì tôi sẵn sàng làm kẻ lười nhất thiên hạ.

SQL không khó học chút nào cả. Nó chỉ có vài câu lệnh và một số hàm đếm trên đầu ngón tay. Tôi có thể khẳng định điều này. Cái khó là hiểu thấu lý thuyết Đại Số Tập Hợp để có thể thiết kế CSDL đạt chuẩn (tối thiểu là bậc 3) và lập thuât toán truy xuất theo ý muốn.
 
Upvote 0
...
Với tôi là người đã biết 1 chút về VBA rồi mà còn đụng tới món ADO mà lúng túng như vậy...

Tại bạn bước vào chụp ngay 1 đống đề tài khó mới thấy vậy.
Nếu chịu đi từ căn bản, vào mấy cái thớt nói chuyện căn bản trước khi vào mấy cái thớt "đố vui..." thì sẽ thấy nó rất dễ. Toic nghĩ cũng chính vì dễ quá cho nên bà con cần thách thức mới giở chứng nghĩ ra mấy cái đề tài khó.

Như tôi đã nói nhiều lần, ADO hoàn toàn có thể gói trọn trong vài cái hàm thư viện. Nếu bạn chỉ cần truy vấn căn bản thì cóp mấy cái hàm này vào module, gọi hàm, nạp tham số, hết.

Ngay cả nếu bạn vào mấy cái thớt "đó vui..." thì cũng thấy những vấn đề trong đó là do người ta không muốn thiết kế lại bảng (điển hình: tên sheet có chứa dấu chấm). Một khi bảng thiết kế đàng hoàng thì nó dễ vô cùng.
 
Upvote 0
Một khi bảng thiết kế đàng hoàng thì nó dễ vô cùng.
cái đó mới là cái quang trọng để học và làm việc đó, lúc sinh viên cứ tìm tòi rất nhiều, ra trường đi làm chỉ ứng dụng những cái cơ bản vào trong công việc làm nhiều thôi, còn những cái phức tạp hầu như là người ta đã có nhóm làm sẵn hết rồi.
 
Upvote 0
Cách đơn giản nhất của mình là xài ké mấy cái hàm kết nối (ADO) trên GPE lấy dữ liệu file đóng lên một Sheet phụ xong dùng VBA muốn làm cái gì thì làm

Còn cộng trừ nhân chia luôn trong ADO trước khi gán kết quả lên Sheet Là Tịt....không dại gì nội công chưa đủ húc đầu vào code ADO nhìn như mớ rau muống đó sợ chết đi mất ....,,,,,,,
 
Upvote 0
Tôi và anh í cùng í tưởng...haha....Và đã và đang làm thía đó... Người ta giao cho mình 1 cái Thùng bự chà bá lửa: Chứa gạo, thóc, đậu, ...và cả Sạn nữa. Bảo mình lọc 1 phát ra ngay thì mình chịu....
Nhưng mình có cách là Bê Nguyên cái thùng đó đặt sang nơi khác....Rồi muốn xử gì thì xử...haha--=0--=0--=0
OK Bạn ..........mình tịt ADO thì mình phải có tuyệt kỷ khác chứ lị............--=0 hông lẻ bó tay.com
 
Upvote 0
Cách đơn giản nhất của mình là xài ké mấy cái hàm kết nối (ADO) trên GPE lấy dữ liệu file đóng lên một Sheet phụ xong dùng VBA muốn làm cái gì thì làm

Còn cộng trừ nhân chia luôn trong ADO trước khi gán kết quả lên Sheet Là Tịt....không dại gì nội công chưa đủ húc đầu vào code ADO nhìn như mớ rau muống đó sợ chết đi mất ....,,,,,,,
lấy ra 1 sheet phụ là cách tôi cũng hay làm
 
Upvote 0
Bạn doveandrose ơi cảm ơn bạn rất nhiều!^^ ADO thứ thiệt đó sao?.. hix khủng khiếp quá cứ tưởng tiếng Thái hay tiếng Lào **~**-+*/ ...



Bạn doveandrose ơi như bạn phihndhsp gọi theo tên có đơn giản và dễ hiểu không vậy.
Nếu còn cách viết cũng dùng ADO gì đó mà dễ hiểu hơn mong bạn chỉ dẫn cho ạ .. Bạn doveandrose ơi... -\\/.-\\/.
Thật ra ADO không khó lắm đâu. Để hôm nào rảnh rổi mình viết bài này cho bạn tham khảo. Tuy nhiên có những thứ chỉ cần biết ứng dụng là được, chẳng cần hiểu làm gì cho nhức đầu.
Hẹn gặp bài viết sau của mình.
 
Upvote 0
Thật ra ADO không khó lắm đâu. Để hôm nào rảnh rổi mình viết bài này cho bạn tham khảo. Tuy nhiên có những thứ chỉ cần biết ứng dụng là được, chẳng cần hiểu làm gì cho nhức đầu.
Hẹn gặp bài viết sau của mình.
Cho thêm cái tài liệu với nhiều nhiều bài mẫu kèm chú thích để dễ hiểu luôn nha bác. ngóng bài viết mới của bác.........|||||
 
Upvote 0
Bên hộp Lập Trình với Excel -> Cơ Sở Dữ Liệu có một đống bài về ADO, từ căn bản đến nâng cao. Qua bên ấy mà tìm. Chỗ nào không hiểu thì cứ mở 1 thớt ra mà hỏi.
 
Upvote 0
Thật ra ADO không khó lắm đâu. Để hôm nào rảnh rổi mình viết bài này cho bạn tham khảo. Tuy nhiên có những thứ chỉ cần biết ứng dụng là được, chẳng cần hiểu làm gì cho nhức đầu.
Hẹn gặp bài viết sau của mình.

Hi, tôi mong bạn nhiều lắm bạn ah !
Tôi xin cảm ơn bạn nhiều về tinh thần trợ giúp này, mong bạn sớm trở lại ...
Trân trọng.
 
Upvote 0
Gởi bạn Chủ topic.

....

Nếu có khó khăn gì, với nội dung khác bài này thì nên lập topic mới và hỏi ở topic đó....Không đi vào topic này nữa nếu vấn đề không liên quan tới tiêu đề bài viết.

==> Lúc đó sẽ nhận được nhiều sự trợ giúp từ GPE (chắc chắn như vậy...)

Chúc bạn thành công!
P/s: rất vui khi biết bạn cũng là 1 Fan của Blackberry!!! (Với tôi, chỉ có thể là Blackberry..., No IOs,......)

Hi,hpkhuong bạn cũng vậy. Tôi chúc bạn thành công thêm thành công,

Tuy mới bước chân vào diễn đàn này nhưng tôi cũng đã cảm nhận được ít nhiều những gì bạn nói bạn ah, ấn tượng đầu đến với tôi là bạn và bạn doveandrose các bạn luôn đồng hành trợ giúp cho tôi rất nhiệt tình và rất nỗ lực..., đôi lúc tôi cảm thấy có phần nào xúc động, không nghĩ là mọi người ở diễn đàn này lại nhiệt và cư xử văn hóa đến vậy.Cảm giác như một sự may mắn với đang đến dần với tôi...

Tôi xin cảm ơn và trân trọng nhiều những gì mà các bạn ở diễn đàn này mang lại cho tôi.
 
Upvote 0
Hi,hpkhuong bạn cũng vậy. Tôi chúc bạn thành công thêm thành công,

Tuy mới bước chân vào diễn đàn này nhưng tôi cũng đã cảm nhận được ít nhiều những gì bạn nói bạn ah, ấn tượng đầu đến với tôi là bạn và bạn doveandrose các bạn luôn đồng hành trợ giúp cho tôi rất nhiệt tình và rất nỗ lực..., đôi lúc tôi cảm thấy có phần nào xúc động, không nghĩ là mọi người ở diễn đàn này lại nhiệt và cư xử văn hóa đến vậy.Cảm giác như một sự may mắn với đang đến dần với tôi...

Tôi xin cảm ơn và trân trọng nhiều những gì mà các bạn ở diễn đàn này mang lại cho tôi.

Vậy bạn hãy giữ lấy cảm xúc đó, và tiếp tục phát triển, đừng khi yêu cầu đã giải quyết đơn giản, lại muốn phức tạp vấn đề lên.
 
Upvote 0
...đừng khi yêu cầu đã giải quyết đơn giản, lại muốn phức tạp vấn đề lên.

Xin cảm ơn bạn đã cho tôi lời khuyên, với những người mới như tôi không những rất cần những lời để học hỏi về kiến thức mà còn cần cả những lời khuyên trong việc vấn đề ứng xử như bạn đã đề cập, nhưng tôi chưa hiểu ý của bạn lắm bạn có thể nói rõ hơn và chỉ cho tôi biết cụ thể là điểm nào tôi cần lưu ý không ạ.
Đúng là trong chủ đề có nhiều bài viết tôi thấy rất phức tạp thậm trí là tôi không hiểu 1 chữ nào cả luôn vì vậy tôi muốn nhờ thêm sự trợ giúp của các bạn để được giải thích giúp tôi hiểu được vấn đề kia mà ... "muốn phức tạp vấn đề lên" là sao vậy bạn..
Mong bạn có thể viết thêm vài dòng chỉ rõ cho tôi hiểu được ý nghĩa của câu nói trên được không, để tôi có thể hoàn thiện được bản thân theo chiều hướng đúng đắn hơn.

Trân trọng.
 
Upvote 0
Xin cảm ơn bạn đã cho tôi lời khuyên, với những người mới như tôi không những rất cần những lời để học hỏi về kiến thức mà còn cần cả những lời khuyên trong việc vấn đề ứng xử như bạn đã đề cập, nhưng tôi chưa hiểu ý của bạn lắm bạn có thể nói rõ hơn và chỉ cho tôi biết cụ thể là điểm nào tôi cần lưu ý không ạ.
Đúng là trong chủ đề có nhiều bài viết tôi thấy rất phức tạp thậm trí là tôi không hiểu 1 chữ nào cả luôn vì vậy tôi muốn nhờ thêm sự trợ giúp của các bạn để được giải thích giúp tôi hiểu được vấn đề kia mà ... "muốn phức tạp vấn đề lên" là sao vậy bạn..
Mong bạn có thể viết thêm vài dòng chỉ rõ cho tôi hiểu được ý nghĩa của câu nói trên được không, để tôi có thể hoàn thiện được bản thân theo chiều hướng đúng đắn hơn.

Trân trọng.

Là khi bài đã giúp theo phương pháp mở file thông thường,không cần yêu cầu rèn thêm dao to (thường dùng mổ bò) nữa.
 
Lần chỉnh sửa cuối:
Upvote 0
Là khi bài đã giúp theo phương pháp mở file thông thường, tốt rồi, hay ADO đơn giản đã tốt rồi - bạn còn cố hỏi thêm đề nghị thêm ADO cao hơn hay code hay hơn , trong khi các code đơn giản kia bạn còn chưa hiểu hết --> là phức tạp vấn đề hơn. Hay nói khác đi mình có con gà thì dùng dao nhỏ đủ mổ rồi, không cần yêu cầu rèn thêm dao to (thường dùng mổ bò) nữa.

Trời ơi,bạn nhắc đến ADO gì đó mà đến giờ tôi vẫn còn thấy choáng,, vì thấy các bạn đề cập nhiều quá nên tôi cũng hơi tò mò bạn ah.
Một phần do cái tính xấu của tôi hễ ai nhắc đến cái có gì đó mà giải quyết được vấn đề là tôi rất tò mò và mong muốn biết lắm. Nhưng khi thấy rồi, tôi cũng chỉ để ngắm thôi chứ chẳng đem ra dùng được, có thể bạn doveandrose nói đúng:

chữ b là tên 1 cái bảng (đã đặt) và f20 , f21 , f22 ... là tên các cột (đã đặt) trong câu truy vấn
bài này nói là sử dụng những phép truy vấn đơn giản , nhưng để viết được những cái đơn giản ấy thì phải có chút nội công , bằng chứng là rượu mời chưa chắc người ta đã uống ....
qua cách hỏi của bạn thì tôi biết bạn chưa đi được đến chỗ đó đâu , nên việc giải thích lúc này là bất khả thi , thông cảm
những cái này với người sử dụng excel bình thường cũng khó học vì nó có giống VBA đâu . bạn không cần phải gấp , cứ những cái đơn giản nhất từ từ đi lên .

Chắc là công lực tôi quá non nớt nên tôi mới không dùng được cái DAO lợi hại ấy ...
Nhưng đâu riêng gì tôi mong mỏi mà ít nhất cũng có nhiều bạn đề nghị muốn biết để học hỏi mà bạn.

Tôi mới biết đến lập trình và trình độ của tôi đến giờ phút này chỉ biết copy các đoạn mã vào rồi bấm nút tam giác xanh cho chạy thôi bạn ah nên tôi rất muốn hoc từ những cái cơ bản nhất như a,b,c các bạn có thể chỉ cho tôi nên bắt đầu từ đâu được không, có tài liệu liên quan đính kèm thì tốt quá.
hoặc là có thể gửi cho tôi xin qua địa chỉ này với nhé: nguyenhoangoanhtho0305@gmail.com

Xin cảm ơn các bạn rất nhiều.
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom