【VBA/ADO】 Excel에의 DB 접속에 OLEDB 프로바이더 외에 ODBC 드라이버도 사용할 수 있는 것에 대해
1. 개요
VBA에서 MySQL에 연결하는 방법을 살펴보면 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
라는 것이 있다는 것을 알았습니다 (무지 때문에).
조사해 보면, 이 드라이버에서도 ADO로 연결 가능 것을 알았으므로, 시험에 사용해 보았습니다.
기본적인 곳은, 평상시 사용하고 있다 Microsoft.ACE.OLEDBプロバイダ
와 큰 차이는 없습니다만,
데이터형의 읽기 내용에 차이가 있었습니다.
이 점에 대해서도, 이미 정중하게 검증된 사이트 가 있었으므로, 더 이상 쓰는 것이 없습니다만, 모처럼 조사했으므로 써 둡니다.
Excel 서식
OLEDB 데이터 유형
ODBC 데이터 형식
문자열
adVarWChar(202)
adVarChar(200)
수치
adDouble(5)
adDouble(5)
통화
adCurrency(6)
adCurrency(6)
날짜
adDate(7)
adDBTimeStamp(135)
Microsoft가 공식적으로 제공하고 있기 때문에 아는 분들에게는 당연할지도 모릅니다.
2. 소스 코드 예
2-1. Connection 객체의 연결 부분
일반적으로 사용되는 ADODB.Connection 연결 방법
Dim cn As New ADODB.Connection
cn.Provider = "Microsoft.ACE.OLEDB.12.0"
cn.Properties("Extended Properties") = "Excel 12.0"
cn.Open ThisWorkbook.Path & "\" & "TestTable.xlsx"
Microsoft Excel 드라이버를 사용하여 ADODB.Connection을 연결하는 방법
Dim cn As New ADODB.Connection
Dim filePath As String: filePath = ThisWorkbook.Path & "\" & "TestTable.xlsx"
cn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & filePath & ";ReadOnly=1"
cn.Open
2-2. 전체 샘플 코드
'【ODBCドライバー】を使用したアクセス方法
Sub ADOSample()
'インスタンスを作成
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim filePath As String: filePath = ThisWorkbook.Path & "\" & "TestTable.xlsx"
'ADO接続
cn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & filePath & ";ReadOnly=1"
cn.Open
'SQL文の実行
rs.Open "SELECT * FROM [Sheet1$] WHERE 区分 = '野菜'", cn
'Recordset
Do Until rs.EOF
Debug.Print rs("品名") & ", " & rs("単価") & ", " & rs("購入日")
rs.MoveNext
Loop
'メモリの解放
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
참고 사이트
· PRB: ODBC를 사용하여 Excel에 액세스하는 경우 "작업은 업데이트 가능한 쿼리를 사용해야 합니다"
· Excel 파일에 ADO에서 CREATE/DROP/ALTER TABLE
· DAO, ADO, ODBC, OLE DB의 차이점을 간편하게 요약
Reference
이 문제에 관하여(【VBA/ADO】 Excel에의 DB 접속에 OLEDB 프로바이더 외에 ODBC 드라이버도 사용할 수 있는 것에 대해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/t-yama-3/items/aa4cb5b04686a64682ce
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
2-1. Connection 객체의 연결 부분
일반적으로 사용되는 ADODB.Connection 연결 방법
Dim cn As New ADODB.Connection
cn.Provider = "Microsoft.ACE.OLEDB.12.0"
cn.Properties("Extended Properties") = "Excel 12.0"
cn.Open ThisWorkbook.Path & "\" & "TestTable.xlsx"
Microsoft Excel 드라이버를 사용하여 ADODB.Connection을 연결하는 방법
Dim cn As New ADODB.Connection
Dim filePath As String: filePath = ThisWorkbook.Path & "\" & "TestTable.xlsx"
cn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & filePath & ";ReadOnly=1"
cn.Open
2-2. 전체 샘플 코드
'【ODBCドライバー】を使用したアクセス方法
Sub ADOSample()
'インスタンスを作成
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim filePath As String: filePath = ThisWorkbook.Path & "\" & "TestTable.xlsx"
'ADO接続
cn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & filePath & ";ReadOnly=1"
cn.Open
'SQL文の実行
rs.Open "SELECT * FROM [Sheet1$] WHERE 区分 = '野菜'", cn
'Recordset
Do Until rs.EOF
Debug.Print rs("品名") & ", " & rs("単価") & ", " & rs("購入日")
rs.MoveNext
Loop
'メモリの解放
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
참고 사이트
· PRB: ODBC를 사용하여 Excel에 액세스하는 경우 "작업은 업데이트 가능한 쿼리를 사용해야 합니다"
· Excel 파일에 ADO에서 CREATE/DROP/ALTER TABLE
· DAO, ADO, ODBC, OLE DB의 차이점을 간편하게 요약
Reference
이 문제에 관하여(【VBA/ADO】 Excel에의 DB 접속에 OLEDB 프로바이더 외에 ODBC 드라이버도 사용할 수 있는 것에 대해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/t-yama-3/items/aa4cb5b04686a64682ce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)