vba_gpe
Thành viên thường trực




- Tham gia
- 15/12/10
- Bài viết
- 296
- Được thích
- 44
- Nghề nghiệp
- Thất nghiệp
Gửi mọi người
Em có 1 vấn đề nhờ mọi người giải đáp giúp
- Lúc trước em sử dụng Windows 7 -32 bit, dùng ADO để kết nối cơ sở dữ liệu từ 1 file Excel như hàm dưới thì vẫn bình thường (Em có kèm theo code của hàm trích xuất cơ sở dữ liệu)
- Tuy nhiên, nay em cài lại Window 7 -64bit thì không sử dụng được nữa
(Load kiểu nào nó cũng báo lỗi mục Something Wrong mặc dù đúng đường dẫn, và khai báo bình thường giống như trên 32 bit.
- Em thử kiểm tra trong Control Panel/ không thấy mục ODBC giống như 32 bit.
- Thử kiểm tra trong mục Adminstrative Tool/Data Source (ODBC) cũng hiện ra cái giao diện giống như ODBC của Win 32. Tuy nhiên em thấy các DataSource ít hơn (Hình 1). Khi click vào mục Configure của hộp thoại thì xuất hiện lỗi như các hình em kèm theo (Hình 2, Hình 3)
Hình 1:
Hình 2:
Hình 3:
Em đã thử:
1. Tải và cài đặt bộ Microsoft Access Database Enginee cho win 7 64bit tại đường dẫn mà cũng không được
http://www.microsoft.com/en-us/download/details.aspx?id=13255
2. Em đã thử đổi địa chỉ target của ODBC trong Adminstrative Tool/Data Source về đúng đường dẫn : C:\Window\SysWorm64 thay cho System32 rồi mà vẫn không được. Cách này chỉ giải quyết được cho trường hợp không hiện thông báo lỗi như hình 1,2,3 thôi, chứ lúc load dữ liệu vẫn báo lỗi.
Mong nhận được sự giúp đỡ của anh chị và mọi người.
Trân trọng.
Code kèm theo:
Em có 1 vấn đề nhờ mọi người giải đáp giúp
- Lúc trước em sử dụng Windows 7 -32 bit, dùng ADO để kết nối cơ sở dữ liệu từ 1 file Excel như hàm dưới thì vẫn bình thường (Em có kèm theo code của hàm trích xuất cơ sở dữ liệu)
- Tuy nhiên, nay em cài lại Window 7 -64bit thì không sử dụng được nữa
(Load kiểu nào nó cũng báo lỗi mục Something Wrong mặc dù đúng đường dẫn, và khai báo bình thường giống như trên 32 bit.
- Em thử kiểm tra trong Control Panel/ không thấy mục ODBC giống như 32 bit.
- Thử kiểm tra trong mục Adminstrative Tool/Data Source (ODBC) cũng hiện ra cái giao diện giống như ODBC của Win 32. Tuy nhiên em thấy các DataSource ít hơn (Hình 1). Khi click vào mục Configure của hộp thoại thì xuất hiện lỗi như các hình em kèm theo (Hình 2, Hình 3)
Hình 1:

Hình 2:

Hình 3:

Em đã thử:
1. Tải và cài đặt bộ Microsoft Access Database Enginee cho win 7 64bit tại đường dẫn mà cũng không được
http://www.microsoft.com/en-us/download/details.aspx?id=13255
2. Em đã thử đổi địa chỉ target của ODBC trong Adminstrative Tool/Data Source về đúng đường dẫn : C:\Window\SysWorm64 thay cho System32 rồi mà vẫn không được. Cách này chỉ giải quyết được cho trường hợp không hiện thông báo lỗi như hình 1,2,3 thôi, chứ lúc load dữ liệu vẫn báo lỗi.
Mong nhận được sự giúp đỡ của anh chị và mọi người.
Trân trọng.
Code kèm theo:
Mã:
Public Sub GetDataExel_ADO(SourceFile As Variant, SourceSheet As String, _
SourceRange As String, TargetRange As Range, Header As Boolean, UseHeaderRow As Boolean)
' 30-Dec-2007, working in Excel 2000-2007
Dim rsCon As Object
Dim rsData As Object
Dim szConnect As String
Dim szSQL As String
Dim lCount As Long
' Create the connection string.
If Header = False Then
If Val(Application.Version) < 12 Then
szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & SourceFile & ";" & _
"Extended Properties=""Excel 8.0;HDR=No"";"
Else
szConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & SourceFile & ";" & _
"Extended Properties=""Excel 12.0;HDR=No"";"
End If
Else
If Val(Application.Version) < 12 Then
szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & SourceFile & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes"";"
Else
szConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & SourceFile & ";" & _
"Extended Properties=""Excel 12.0;HDR=Yes"";"
End If
End If
If SourceSheet = "" Then
' workbook level name
szSQL = "SELECT * FROM " & SourceRange$ & ";"
Else
' worksheet level name or range
szSQL = "SELECT * FROM [" & SourceSheet$ & "$" & SourceRange$ & "];"
End If
On Error GoTo SomethingWrong
Set rsCon = CreateObject("ADODB.Connection")
Set rsData = CreateObject("ADODB.Recordset")
rsCon.Open szConnect
rsData.Open szSQL, rsCon, 0, 1, 1
' Check to make sure we received data and copy the data
If Not rsData.EOF Then
If Header = False Then
TargetRange.Cells(1, 1).CopyFromRecordset rsData
Else
'Add the header cell in each column if the last argument is True
If UseHeaderRow Then
For lCount = 0 To rsData.Fields.Count - 1
TargetRange.Cells(1, 1 + lCount).Value = _
rsData.Fields(lCount).Name
Next lCount
TargetRange.Cells(2, 1).CopyFromRecordset rsData
Else
TargetRange.Cells(1, 1).CopyFromRecordset rsData
End If
End If
Else
MsgBox "No records returned from : " & SourceFile, vbCritical
End If
' Clean up our Recordset object.
rsData.Close
Set rsData = Nothing
rsCon.Close
Set rsCon = Nothing
Exit Sub
SomethingWrong:
MsgBox "The file name, Sheet name or Range is invalid of : " & SourceFile, _
vbExclamation, "Error"
On Error Resume Next
End Sub
Lần chỉnh sửa cuối: