다음처럼 ADO의 Connection를 이용하면 엑셀 파일을 생성 할 수 있다.
' ADO 연결 문자열
strConn = ""
strConn = strConn & "Provider=Microsoft.Jet.OLEDB.4.0;"
strConn = strConn & "Data Source=c:\test.xls;"
strConn = strConn & "Extended Properties=""Excel 8.0;HDR=Yes"";"
' ADO.Connection 객체 생성
Set adoConn = CreateObject("ADODB.Connection")
' ADO 연결
adoConn.ConnectionString = strConn
adoConn.Open
' 새로운 테이블(엑셀에서의 시트) 생성
strSQL = "CREATE TABLE Sheet1 (COL_A_NAME TEXT, COL_B_NAME TEXT, COL_C_NAME TEXT)"
adoConn.Execute strSQL
' 레코드 저장
strSQL = ""
strSQL = strSQL & vbCrLf & "INSERT INTO Sheet1 VALUES ( 1, 2, 3 ) "
adoConn.Execute strSQL
' ADO 연결 끊기
adoConn.Close
Set adoConn = Nothing
strConn = ""
strConn = strConn & "Provider=Microsoft.Jet.OLEDB.4.0;"
strConn = strConn & "Data Source=c:\test.xls;"
strConn = strConn & "Extended Properties=""Excel 8.0;HDR=Yes"";"
' ADO.Connection 객체 생성
Set adoConn = CreateObject("ADODB.Connection")
' ADO 연결
adoConn.ConnectionString = strConn
adoConn.Open
' 새로운 테이블(엑셀에서의 시트) 생성
strSQL = "CREATE TABLE Sheet1 (COL_A_NAME TEXT, COL_B_NAME TEXT, COL_C_NAME TEXT)"
adoConn.Execute strSQL
' 레코드 저장
strSQL = ""
strSQL = strSQL & vbCrLf & "INSERT INTO Sheet1 VALUES ( 1, 2, 3 ) "
adoConn.Execute strSQL
' ADO 연결 끊기
adoConn.Close
Set adoConn = Nothing

엑셀 파일의 한 시트에는 65536개의 레코드까지만 저장 가능한데, 위 방법을 이용하면 65536개를 초과해서 만들 수 있지않을까 싶어서 테스트해봤다.
하지만 ADO를 이용한 방법에서도 최대 65536 까지만 저장되고 초과하는 경우에는 에러가 발생한다.
참고로 엑셀 2007에서는 레코드 개수의 제한이 없어졌다고 한다.
☞ 본문 출처 : http://www.enjoydev.com/blog/103
Project1.vbp
댓글을 달아 주세요