달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2014. 11. 19. 11:40

mdb(ADO) 작성 방법 프로그래밍 엑셀VBA 이야기2014. 11. 19. 11:40

728x90
반응형

 

 

mdb(ADO) 작성 방법  프로그래밍

 

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)

[출처] mdb(ADO) 작성 방법|작성자 웰빙

 

728x90
반응형
:
Posted by mapagilove