Bạn ơi, mình thử vài lần mà không thành công, mình gửi file đính kèm, bạn thêm giúp mình cái dấu nháy đơn hoặc nháy kép như bạn hướng dẫn nhé
Cảm ơn bạn
Microsoft 365 (tên mới của Office 365) có một số hàm mới dùng cho Excel 365 chuyên trị mảng. Tương tự hàm Query của Google Sheets, các hàm mảng mới này chỉ cần gõ công thức vào 1 ô và ta sẽ có kết quả là một mảng. Mảng này có thể là mảng 1 dòng nhiều cột, 1 cột nhiều dòng, thậm chí một ma trận...
www.giaiphapexcel.com
đang mò đưa cái gán dữ liệu lên Sheet kiểu Office 365 trên Delphi mà kẹt vài thứ chưa xong ( Khi nào xong úp DLL cho he )
Với Mạnh chỉ hướng dẫn cho vậy thôi ... còn làm chi tiết thì ít lắm
Bạn ơi, mình thử vài lần mà không thành công, mình gửi file đính kèm, bạn thêm giúp mình cái dấu nháy đơn hoặc nháy kép như bạn hướng dẫn nhé
Cảm ơn bạn
Trong Query: Thêm cặp ngoặc vuông [] nếu từ khóa chứa chuỗi unicode, kí tự ngoại lệ, hoặc shortName
Dưới đây là đoạn code mà bác không cần dùng đến ShortName, vì nếu file trong folder là duy nhất.
Code dưới cũng sẽ lấy Header nếu có
JavaScript:
Sub GetData_1()
Dim d As Date, CellKQ As Range, fileDirPath As String
Dim CN, RS, Query$
d = Sheets("DATA").Range("A2").Value
fileDirPath = ThisWorkbook.Path & "\" & Format(d, "yyyy.mm.dd") & "\"
Set CN = VBA.CreateObject("ADODB.Connection")
With CN
.Provider = "Microsoft.ACE.OLEDB.16.0"
.ConnectionString = "Data Source='" & fileDirPath & "';Extended Properties='text;hdr=no;IMEX=1'"
End With
CN.Open
Set RS = VBA.CreateObject("ADODB.Recordset")
Query = "SELECT * FROM [" & Format(d, "yyyymm") & "~1" & ".csv] WHERE ISNUMERIC(F2) ORDER BY 6 ASC"
RS.Open Query, CN, 3, 1
If Not RS.BOF Or Not RS.EOF Then Sheets("DATA").Cells(5, 1).CopyFromRecordset RS
Set RS = VBA.CreateObject("ADODB.Recordset")
Query = "SELECT TOP 1 * FROM [" & Format(d, "yyyymm") & "~1" & ".csv] WHERE NOT ISNUMERIC(F2)"
RS.Open Query, CN, 3, 1
If Not RS.BOF Or Not RS.EOF Then Sheets("DATA").Cells(4, 1).CopyFromRecordset RS
CN.Close
Set CN = Nothing: Set RS = Nothing
End Sub
@Chủ Topic
Thực hiện theo Short Name, và đặt HDR=YES ---> rồi Order theo đúng tiêu đề có trong CSV là được mong muốn
Nhưng tên đặt kiểu thư mục / file này thì làm khó chính mình thôi
@Chủ Topic
Thực hiện theo Short Name, và đặt HDR=YES ---> rồi Order theo đúng tiêu đề có trong CSV là được mong muốn
Nhưng tên đặt kiểu thư mục / file này thì làm khó chính mình thôi
Thực hiện theo Shortname thì bài #2 bạn @befaint đã giúp em rồi. Do có bạn HeSanbi nói đặt chuỗi nguồn trong nháy kép mà không cần shortname nên em mới hỏi lại.
Về vấn đề đặt tên thư mục, em không thay đổi được, em lấy dữ liệu của người khác chia sẻ vì vậy phải tìm cách vượt qua thử thách này thôi
Bạn chia sẻ phần này cho mình được không. Mình cũng đang rất quan tâm đến cái này. Thực tế mình đang lấy dữ liệu từ .csv vào sheet rồi đẩy vào SQL Server. Trước có @ongke0711 đã hướng dẫn nhưng quá trình thực hiện gặp vướng mắc nên đành đi đường vòng qua worksheet của Excel
Trong Query: Thêm cặp ngoặc vuông [] nếu từ khóa chứa chuỗi unicode, kí tự ngoại lệ, hoặc shortName
Dưới đây là đoạn code mà bác không cần dùng đến ShortName, vì nếu file trong folder là duy nhất.
Code dưới cũng sẽ lấy Header nếu có
JavaScript:
Sub GetData_1()
Dim d As Date, CellKQ As Range, fileDirPath As String
Dim CN, RS, Query$
d = Sheets("DATA").Range("A2").Value
fileDirPath = ThisWorkbook.Path & "\" & Format(d, "yyyy.mm.dd") & "\"
Set CN = VBA.CreateObject("ADODB.Connection")
With CN
.Provider = "Microsoft.ACE.OLEDB.16.0"
.ConnectionString = "Data Source='" & fileDirPath & "';Extended Properties='text;hdr=no;IMEX=1'"
End With
CN.Open
Set RS = VBA.CreateObject("ADODB.Recordset")
Query = "SELECT * FROM [" & Format(d, "yyyymm") & "~1" & ".csv] WHERE ISNUMERIC(F2) ORDER BY 6 ASC"
RS.Open Query, CN, 3, 1
If Not RS.BOF Or Not RS.EOF Then Sheets("DATA").Cells(5, 1).CopyFromRecordset RS
Set RS = VBA.CreateObject("ADODB.Recordset")
Query = "SELECT TOP 1 * FROM [" & Format(d, "yyyymm") & "~1" & ".csv] WHERE NOT ISNUMERIC(F2)"
RS.Open Query, CN, 3, 1
If Not RS.BOF Or Not RS.EOF Then Sheets("DATA").Cells(4, 1).CopyFromRecordset RS
CN.Close
Set CN = Nothing: Set RS = Nothing
End Sub
Cảm ơn bạn đã hỗ trợ.
Code của bạn đã chạy tốt.
Cho mình hỏi thêm là dữ liệu csv đã được copy vào file nhưng thứ tự cột không giống file csv. Không rõ đoạn code kiểm soát thứ tự các cột được copy vào file ở chỗ nào. Bạn chỉ giúp mình nhé !
Thực hiện theo Shortname thì bài #2 bạn @befaint đã giúp em rồi. Do có bạn HeSanbi nói đặt chuỗi nguồn trong nháy kép mà không cần shortname nên em mới hỏi lại.
Về vấn đề đặt tên thư mục, em không thay đổi được, em lấy dữ liệu của người khác chia sẻ vì vậy phải tìm cách vượt qua thử thách này thôi
Bài đã được tự động gộp:
Bạn chia sẻ phần này cho mình được không. Mình cũng đang rất quan tâm đến cái này. Thực tế mình đang lấy dữ liệu từ .csv vào sheet rồi đẩy vào SQL Server. Trước có @ongke0711 đã hướng dẫn nhưng quá trình thực hiện gặp vướng mắc nên đành đi đường vòng qua worksheet của Excel
Bạn chia sẻ phần này cho mình được không. Mình cũng đang rất quan tâm đến cái này. Thực tế mình đang lấy dữ liệu từ .csv vào sheet rồi đẩy vào SQL Server. Trước có @ongke0711 đã hướng dẫn nhưng quá trình thực hiện gặp vướng mắc nên đành đi đường vòng qua worksheet của Excel
Bài số 2 và bài số 24 đã làm cho bạn hết rồi mà ... Mình muốn nếu vấn đề ra đó để mở rộng nghiên cứu thêm thôi mà
Thong thả bạn thử mò xem sao ===> xong rút ra cái mình cần ===> tự tay mà viết code lấy là ok ngay và luôn đó
Bạn đang dùng VBA của các bạn khác ổn định nên tôi không ý kiến cái gì hay hơn (SQL hay Power query). Có điều tôi chưa hiểu "Task Scheduler kích hoạt file Excel với tính năng Workbook_Open" tại sao không dùng được với Power query? Bản thân Query có tính năng refresh on open, không những thế trong sự kiện workbook_Open cũng có thể viết câu lệnh refresh query được mà?
Có điều tôi chưa hiểu "Task Scheduler kích hoạt file Excel với tính năng Workbook_Open" tại sao không dùng được với Power query? Bản thân Query có tính năng refresh on open, không những thế trong sự kiện workbook_Open cũng có thể viết câu lệnh refresh query được mà?
Bạn đang dùng VBA của các bạn khác ổn định nên tôi không ý kiến cái gì hay hơn (SQL hay Power query). Có điều tôi chưa hiểu "Task Scheduler kích hoạt file Excel với tính năng Workbook_Open" tại sao không dùng được với Power query? Bản thân Query có tính năng refresh on open, không những thế trong sự kiện workbook_Open cũng có thể viết câu lệnh refresh query được mà?
Chào bác.
Đúng là em chưa dùng tính năng nào của Power Query trừ tính năng Copy from Web để lấy dữ liệu từ Google sheet.
Theo em hình dung, dùng Power Query thì vẫn cần người dùng có vài thao tác theo menu của PQ. Còn em dùng Code VBA sẽ tự động hoàn toàn. Ngoài ra, em nghĩ rằng dùng PQ không nhanh, mượt bằng ADO.
Đây là suy nghĩ của em, nếu đuoc bác cho vài mẫu để em thấy sức mạnh của nó nhằm có động lực tìm hiểu về PQ thì tốt quá
Chào bác.
Đúng là em chưa dùng tính năng nào của Power Query trừ tính năng Copy from Web để lấy dữ liệu từ Google sheet.
Theo em hình dung, dùng Power Query thì vẫn cần người dùng có vài thao tác theo menu của PQ. Còn em dùng Code VBA sẽ tự động hoàn toàn. Ngoài ra, em nghĩ rằng dùng PQ không nhanh, mượt bằng ADO.
Đây là suy nghĩ của em, nếu đuoc bác cho vài mẫu để em thấy sức mạnh của nó nhằm có động lực tìm hiểu về PQ thì tốt quá
Chào bác.
Đúng là em chưa dùng tính năng nào của Power Query trừ tính năng Copy from Web để lấy dữ liệu từ Google sheet.
Theo em hình dung, dùng Power Query thì vẫn cần người dùng có vài thao tác theo menu của PQ. Còn em dùng Code VBA sẽ tự động hoàn toàn. Ngoài ra, em nghĩ rằng dùng PQ không nhanh, mượt bằng ADO.
Đây là suy nghĩ của em, nếu đuoc bác cho vài mẫu để em thấy sức mạnh của nó nhằm có động lực tìm hiểu về PQ thì tốt quá
Power query thao tác một lần duy nhất, sau đó chỉ cần refresh để cập nhật dữ liệu mới nhất, nếu gộp nhiều file thành một thì thậm chí khi thêm file, chỉ cần chép thêm file vào thư mục. Cũng tương đương SQL Union nhiều file trong thư mục. Thao tác cũng đơn giản chứ không khó như học lập trình, học SQL
Tài liệu tôi đã chia sẻ từ 2019: https://www.giaiphapexcel.com/diend...pivot-nhân-sinh-nhật-gpe13.143641/post-927216
Ôi may quá, chủ đề đang tìm kiếm.
Em dựng 1 con SQL Server có cài SSMS được mấy tháng mà chưa làm ăn được gì với nó. Mục đích là dựng database của riêng mình từ các file csv (được kết xuất từ DB khác (tất nhiên em ko đc mò vào cái DB ấy rồi).
Mấy bài em hỏi về ADO cũng là để truy xuất dữ liệu ra Excel và đưa dữ liệu vào DB. Việc truy xuất thì em đã copy đc đoạn code mẫu trên diễn đàn nên tạm thời yên tâm. Riêng việc đưa dữ liệu vào SQL Server thì thật tốn thời gian vì phải đi lòng vòng theo đúng khả năng hạn hẹp của mình. Em đã tạo Job và chỉ chờ cái quan trọng nhất là SP (Stored Procedure) nhưng chưa khi nào làm được dù cũng sục sạo trên Youtube và Google. Tiện đây bác chỉ giúp em với nhé hoặc em mở topic mới thì bác hướng dẫn em. Cảm ơn bác
Power query thao tác một lần duy nhất, sau đó chỉ cần refresh để cập nhật dữ liệu mới nhất, nếu gộp nhiều file thành một thì thậm chí khi thêm file, chỉ cần chép thêm file vào thư mục. Cũng tương đương SQL Union nhiều file trong thư mục. Thao tác cũng đơn giản chứ không khó như học lập trình, học SQL
Tài liệu tôi đã chia sẻ từ 2019: https://www.giaiphapexcel.com/diend...pivot-nhân-sinh-nhật-gpe13.143641/post-927216
Bác ơi, mỗi ngày tên file csv lại khác nhau mà. Tên file được có quy luật là kèm tiền tố là ngày tháng được tạo ra. Không rõ PQ có uyển chuyển được vấn đề này không ?
Bác ơi, mỗi ngày tên file csv lại khác nhau mà. Tên file được có quy luật là kèm tiền tố là ngày tháng được tạo ra. Không rõ PQ có uyển chuyển được vấn đề này không ?
Ôi may quá, chủ đề đang tìm kiếm.
Em dựng 1 con SQL Server có cài SSMS được mấy tháng mà chưa làm ăn được gì với nó. Mục đích là dựng database của riêng mình từ các file csv (được kết xuất từ DB khác (tất nhiên em ko đc mò vào cái DB ấy rồi).
Mấy bài em hỏi về ADO cũng là để truy xuất dữ liệu ra Excel và đưa dữ liệu vào DB. Việc truy xuất thì em đã copy đc đoạn code mẫu trên diễn đàn nên tạm thời yên tâm. Riêng việc đưa dữ liệu vào SQL Server thì thật tốn thời gian vì phải đi lòng vòng theo đúng khả năng hạn hẹp của mình. Em đã tạo Job và chỉ chờ cái quan trọng nhất là SP (Stored Procedure) nhưng chưa khi nào làm được dù cũng sục sạo trên Youtube và Google. Tiện đây bác chỉ giúp em với nhé hoặc em mở topic mới thì bác hướng dẫn em. Cảm ơn bác
Bài đã được tự động gộp:
Bác ơi, mỗi ngày tên file csv lại khác nhau mà. Tên file được có quy luật là kèm tiền tố là ngày tháng được tạo ra. Không rõ PQ có uyển chuyển được vấn đề này không ?
Here, we'll see how we can import CSV data into SQL server using SSMS, convert it into data tables, and execute SQL queries on the tables that we generate.
www.sqlshack.com
Nhưng không có quyền truy xuất .. dến DB thì còn làm được gì vậy, vậy nhờ IT - người quản lý khóa cái đó giúp bạn
Mấy bài em hỏi về ADO cũng là để truy xuất dữ liệu ra Excel và đưa dữ liệu vào DB. Việc truy xuất thì em đã copy đc đoạn code mẫu trên diễn đàn nên tạm thời yên tâm. Riêng việc đưa dữ liệu vào SQL Server thì thật tốn thời gian vì phải đi lòng vòng theo đúng khả năng hạn hẹp của mình. Em đã tạo Job và chỉ chờ cái quan trọng nhất là SP (Stored Procedure) nhưng chưa khi nào làm được dù cũng sục sạo trên Youtube và Google. Tiện đây bác chỉ giúp em với nhé hoặc em mở topic mới thì bác hướng dẫn em. ]