Excel로 작업한 Data를 Access로 변환하는 내용입니다.
1. 엑셀파일을 하나 생성합니다.
- 파일명 : C:\Book1.xls
2. 엑셀파일에 다음과 같이 데이타를 작성해 주십시요.
영어단어 뜻 값
school 학교 1
student 학생 2
computer 컴퓨터 3
visual basic 비쥬얼베이직 4
- 엑셀파일 작성시 첫번째 Row 의 값을 MDB 에선 필드명으로 인식을 합니다. 그렇기 때문에 첫번째 Row 는 필드명으로 그리구 두번째 Row 부터 데이타를 입력해 주시기 바랍니다.
3. 엑셀파일이 작성되었으면 비쥬얼베이직에서 프로젝트를 하나 생성하고 기본폼위에 버튼 하나와 데이타컨트롤 하나를 생성합니다.
- 버튼 : Command1
데이타컨트롤 : Data1
4. 폼의 선언부에 다음의 함수와 버튼에 다음과 같이 코딩하시기 바랍니다.
Private STR_MDB As String
Private Function CREATE_TABLE() As Integer
Dim tdExample As TableDef
Dim fld() As Field
Dim dbDatabase As Database
Dim strTable As String
Dim intCount As Integer
Dim i As Integer
If Dir(STR_MDB) <> "" Then
' 파일이 존재하면 삭제한다.
Kill STR_MDB
End If
strTable = Mid(CStr(Data1.RecordSource), 1, Len(CStrata1.RecordSource)) - 1)
' MDB 생성
Set dbDatabase = CreateDatabase(STR_MDB, dbLangGeneral, dbEncrypt)
' 테이블 생성
Set tdExample = dbDatabase.CreateTableDef(strTable)
intCount = Data1.Recordset.Fields.Count
ReDim fld(intCount - 1)
' 엑셀의 필드수만큼 필드 생성
For i = 0 To intCount - 1
Set fld(i) = tdExample.CreateField(Data1.Recordset.Fields(i).Name, _
Data1.Recordset.Fields(i).Type, _
Data1.Recordset.Fields(i).Size)
tdExample.Fields.Append fld(i)
Next
dbDatabase.TableDefs.Append tdExample
' 필드수를 리턴한다.
CREATE_TABLE = intCount
End Function
Private Sub Command1_Click()
Dim wrkDATA As Workspace
Dim dbsDATA As Database
Dim strTable As String
Dim strSQL As String
Dim strValue As String
Dim intCount As Integer
Dim i As Integer
Dim x As Integer
Dim intField As Integer
' Data1 데이타콘트롤에 엑셀파일을 연결하여 오픈한다.
Data1.Connect = "Excel 8.0;"
' 엑셀파일을 지정한다.
Data1.DatabaseName = "C:\Book1.xls"
' 엑셀파일내의 쉬트를 지정한다. ($ 표시가 쉬트명 뒤에 붙는다. 주의)
Data1.RecordSource = "tb_test$"
Data1.Refresh
' 엑셀파일안의 데이타 갯수 (레코드 카운트) 를 읽어온다.
Data1.Recordset.MoveLast
intCount = Data1.Recordset.RecordCount
Data1.Recordset.MoveFirst
' 생성할 MDB 파일명
STR_MDB = "c:\test.mdb"
' 엑셀파일의 테이블명에서 마지막문자인 $ 표시를 제거하여 테이블명을 만든다.
strTable = Mid(CStr(Data1.RecordSource), 1, Len _
(CStrData1.RecordSource)) - 1)
' MDB 를 생성한다. (리턴값은 엑셀파일안의 필드 갯수)
intField = CREATE_TABLE
' 생성한 MDB 를 오픈한다.
Set wrkDATA = CreateWorkspace("", "admin", "", dbUseJet)
Set dbsDATA = wrkDATA.OpenDatabase(STR_MDB, False, False)
' 엑셀파일에서 데이타를 읽어서 MDB 에 저장한다.
For i = 1 To intCount
strValue = "'" & Data1.Recordset.Fields(0) & "'"
For x = 1 To intField - 1
strValue = strValue & ", '" & Data1.Recordset.Fields(x) & "'"
Next x
strSQL = "INSERT INTO "" & strTable & "" VALUES(" & strValue & ")"
' ++ ++
' 만약에 ++ 부분이 두개의 큰따음표로 보이면 하나로 수정하십시요.
' 원래 하나입니다.
dbsDATA.Execute strSQL
Data1.Recordset.MoveNext
Next i
dbsDATA.Close
wrkDATA.Close
Set dbsDATA = Nothing
Set wrkDATA = Nothing
End Sub
위의것은 DB를 생성하면서 엑셀 화일을 만든 디비에 집어늫는것이고요
이방식말고..
만들어놓은 DB에 ADO방식으로 엑셀데이터를 입력하고싶은데
전혀감이 안옵니다..
만들테이블 명은 ATABLE이구요..
컬럼(필드)명은 num , nam, nrm입니다..
도와주십시요..
질문자가 선택한 답변
re: 비주얼베이직..엑셀파일을 mdb(ado방식)로 저장하는 프로그램입니다.
kabiyo (2005-06-23 22:46 작성)
이의제기 | 신고
질문자 평
^^ 감사합니다.. 데브피아랑 하우투는 이미 알고 있는데 거긴 없어서 ..ㅎ 암튼 고맘습니다.. 즐거운하루 상퀘한 하루 ..
MSDN에 ADO에 대해서 검색해서 보시면 도움이 될겁니다
www.devpia.com
www.howtobank.net
여기 가시면 vb에 대한 많은 정보 얻으실수 있으시구요
제가 봤을땐 ADO도 특별한 방법 있는거 아닌거 같은데........
변수 선언할때 ADO형식으로 선언해주고......
ADO형식을 한번 참조해보세요 그러시면
코드 약간 수정으로 ADO연결 가능합니다
(출처 : '비주얼베이직..엑셀파일을 mdb(ado방식)로 저장하는 프로그램입니다.' - 네이버 지식iN)