tan.ngohoangquoc
Thành viên hoạt động



- Tham gia
- 10/7/14
- Bài viết
- 100
- Được thích
- 41
- Nghề nghiệp
- M&A Specialist - RM Assistant
Hi mọi người,
Em viết đoạn code dưới để lấy dữ liệu từ nhiều file đóng và có một số thắc mắc
1. Em muốn lấy dữ liệu từ sheet đầu tiên của mỗi file (tên sheet không cố định) (thật sự là mỗi file chỉ có 1 sheet)
Search trên mạng có bài dùng ADOX.Catelog và ADOX.Table để lấy thông tin sheet. không biết là em áp dụng đúng không.
2. SELECT *, em muốn thay * bằng tên khác (một loạt tên thay đổi theo yêu cầu người dùng) nên em dùng hàm JOIN để tạo ra một string dạng [Col 1],[Col 2] - Ngoài cách này còn cách nào khác không?
Thanks mọi người (Không chuyên viết code nên hơi gúm mọi người ném đá nhẹ
)
Em viết đoạn code dưới để lấy dữ liệu từ nhiều file đóng và có một số thắc mắc
1. Em muốn lấy dữ liệu từ sheet đầu tiên của mỗi file (tên sheet không cố định) (thật sự là mỗi file chỉ có 1 sheet)
Search trên mạng có bài dùng ADOX.Catelog và ADOX.Table để lấy thông tin sheet. không biết là em áp dụng đúng không.
2. SELECT *, em muốn thay * bằng tên khác (một loạt tên thay đổi theo yêu cầu người dùng) nên em dùng hàm JOIN để tạo ra một string dạng [Col 1],[Col 2] - Ngoài cách này còn cách nào khác không?
Thanks mọi người (Không chuyên viết code nên hơi gúm mọi người ném đá nhẹ

Mã:
Private Sub GetData(objFile As Object)
Dim cn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim objCat As ADOX.Catalog
Dim tbl As ADOX.Table
Dim sSheet As String
Dim Arr() As Variant
Dim col As String
Arr = Sheet1.[A3:D3].Value
col = Join(Application.Transpose(Application.Transpose(Arr)), "],[")
col = "[" & col & "]"
cn.Open ("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};dbq=" & objFile & ";")
Set objCat = New ADOX.Catalog
Set objCat.ActiveConnection = cn
For Each tbl In objCat.Tables
sSheet = tbl.Name
Next tbl
rst.Open ("select " & col & "from [" & sSheet & "]"), cn
Sheet1.[A4].CopyFromRecordset rst
End Sub