EXCEL VBA에서 워크시트에 CREATE TABLE(ADO)
4329 단어 VBA
거동
・커넥션은 보통으로
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.Execute "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=[fullpath];" & _
"Extended Properties=""Excel 12.0;HDR=Yes;"""
· 존재하지 않는 시트에 테이블을 작성할 수 없다 (시트는 자동 삽입되지 않는다. 뒤에 $
를 붙여도 동일)
'「オブジェクト 'Sheet2' が見つかりませんでした...」エラーが返る
cn.Execute "CREATE TABLE [Sheet2] (fieldname datatype)"
・존재하는 시트에서도, 뒤에 $
를 붙이지 않으면 시트로서 인식하지 않는다
'「オブジェクト 'Sheet1' が見つかりませんでした...」エラーが返る
cn.Execute "CREATE TABLE [Sheet1] (fieldname datatype)"
· 시트 이름에 $
를 붙인 경우에만 A1 셀에서 필드가 생성됩니다.
cn.Execute "CREATE TABLE [Sheet1$] (test LONG)"
· 신규 시트의 경우 SQL 문에서 필드를 하나만 정의 할 수 있습니다.
'「定義されているフィールドが多過ぎます」エラーが返る
cn.Execute "CREATE TABLE [Sheet1$] (foo LONG, bar VARCHAR)"
· 이것은 $
다음에 범위를 지정해도 피할 수 없습니다.
'やはり「定義されているフィールドが多過ぎます」エラーが返る
cn.Execute "CREATE TABLE [Sheet1$A1:B1] (foo LONG, bar VARCHAR)"
・필드명을 시트에 미리 입력해 두면, SQL문으로 복수 필드를 정의해도 통과한다
'通る
cn.Execute "CREATE TABLE [Sheet1$A1:C1] (foo LONG, bar VARCHAR, hoge DATETIME)"
· 필드 이름을 미리 입력하면 테이블의 위치는 자유
'通る
cn.Execute "CREATE TABLE [Sheet1$C5:D5] (poyo LONG, peyo VARCHAR)"
・일단 정의된 필드 영역은 기억되어 모든 영역의 「상하의 끝」과 「좌우의 끝」을 포함한 레인지 모든 범위(위의 예에서는 A1:D5)로, 필드명의 사전 입력 없이 SQL문으로부터 필드 정의할 수 있게 된다(라고 하는지, 정의할 수 있어 버리기 때문에 혼란한다)
'通る
cn.Execute "CREATE TABLE [Sheet1$B3:D3] (a LONG, b VARCHAR, c VARCHAR)"
보충
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.Execute "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=[fullpath];" & _
"Extended Properties=""Excel 12.0;HDR=Yes;"""
'「オブジェクト 'Sheet2' が見つかりませんでした...」エラーが返る
cn.Execute "CREATE TABLE [Sheet2] (fieldname datatype)"
'「オブジェクト 'Sheet1' が見つかりませんでした...」エラーが返る
cn.Execute "CREATE TABLE [Sheet1] (fieldname datatype)"
cn.Execute "CREATE TABLE [Sheet1$] (test LONG)"
'「定義されているフィールドが多過ぎます」エラーが返る
cn.Execute "CREATE TABLE [Sheet1$] (foo LONG, bar VARCHAR)"
'やはり「定義されているフィールドが多過ぎます」エラーが返る
cn.Execute "CREATE TABLE [Sheet1$A1:B1] (foo LONG, bar VARCHAR)"
'通る
cn.Execute "CREATE TABLE [Sheet1$A1:C1] (foo LONG, bar VARCHAR, hoge DATETIME)"
'通る
cn.Execute "CREATE TABLE [Sheet1$C5:D5] (poyo LONG, peyo VARCHAR)"
'通る
cn.Execute "CREATE TABLE [Sheet1$B3:D3] (a LONG, b VARCHAR, c VARCHAR)"
Name
프로퍼티. UsedRange
적인 사각형 영역이지만, 워크시트상의 입력을 클리어해도 영역이 바뀌지는 않는다. Reference
이 문제에 관하여(EXCEL VBA에서 워크시트에 CREATE TABLE(ADO)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/RODA/items/4724c607f5c1e5cc0a13텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)