예제: ExcelADO는 Excel 통합 문서에서 ADO를 사용하여 데이터를 읽고 쓰는 방법을 보여준다

기술 자료 번역 기술 자료 번역
기술 자료: 278973 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

요약

ExcelADO.exe 예제에서는 Microsoft Jet OLE DB 4.0 Provider에서 ADO(ActiveX Data Objects)를 사용하여 Microsoft Excel 통합 문서에서 데이터를 읽고 쓰는 방법을 보여 줍니다.

추가 정보

Microsoft 다운로드 센터에서 다음 파일을 다운로드할 수 있습니다.
ExcelADO.exe
릴리스 날짜: 2000년 12월 12일

Microsoft 지원 파일을 다운로드하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
119591 온라인 서비스로부터 Microsoft 지원 파일을 구하는 방법
Microsoft는 파일을 게시한 날짜에 사용할 수 있는 최신 바이러스 예방 프로그램으로 이 파일을 검사했습니다. 이 파일은 무단으로 변경할 수 없는 보안이 향상된 서버에 보관됩니다.

ADO를 사용하는 이유

ADO를 사용하여 Excel 통합 문서로 데이터를 전송하거나 Excel 통합 문서에서 데이터를 검색하면 Excel 자동화에 대해 다음과 같은 몇 가지 이점이 있습니다.
  • 성능. Microsoft Excel은 Out-of-process ActiveX 서버입니다. ADO는 In-process로 실행되므로 비용이 많이 드는 Out-of-process 호출의 오버헤드가 줄어듭니다.
  • 확장성. 웹 응용 프로그램의 경우 Microsoft Excel 자동화가 항상 바람직한 것은 아닙니다. ADO는 통합 문서에서 데이터를 처리하는 더욱 확장 가능한 솔루션을 제공합니다.
ADO는 원시 데이터를 통합 문서로 전송하는 데 엄격하게 사용될 수 있습니다. 셀에 서식이나 수식을 적용하는 데는 ADO를 사용할 수 없습니다. 그러나 미리 서식이 지정된 통합 문서로 데이터를 전송할 수 있으며 해당 서식은 유지됩니다. 데이터가 삽입된 후 "조건부" 서식 지정이 필요한 경우 통합 문서에서 매크로나 자동화를 사용하여 이러한 서식을 지정할 수 있습니다.

Excel 통합 문서에 대한 Jet OLE DB Provider 정보

Microsoft Jet 데이터베이스 엔진을 사용하여 설치 가능한 ISAM(Indexed Sequential Access Method) 드라이버를 통해 Excel 통합 문서 같은 다른 데이터베이스 파일 형식에서 데이터에 액세스할 수 있습니다. Microsoft Jet 4.0 OLE DB Provider에서 지원하는 외부 형식을 열려면 연결의 확장 속성에서 데이터베이스 형식을 지정합니다. Jet OLE DB Provider는 Microsoft Excel 통합 문서에 대한 다음 데이터베이스 형식을 지원합니다.
  • Excel 3.0
  • Excel 4.0
  • Excel 5.0
  • Excel 8.0
참고: Microsoft Excel 5.0 및 7.0(95) 통합 문서에는 Excel 5.0 원본 데이터베이스 형식을 사용하고, Microsoft Excel 8.0(97) 및 9.0(2000) 통합 문서에는 Excel 8.0 원본 데이터베이스 형식을 사용하십시오. ExcelADO.exe 예제에서는 Excel 97 및 Excel 2000 형식으로 Excel 통합 문서를 사용합니다.

다음 예제에서는 Excel 97이나 Excel 2000 통합 문서에 대한 ADO 연결을 보여 줍니다.
Dim oConn As New ADODB.Connection
With oConn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .Properties("Extended Properties").Value = "Excel 8.0"
    .Open "C:\Book1.xls"
    '....
    .Close
End With
				
또는
Dim oConn As New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=C:\Book1.xls;" & _
           "Extended Properties=""Excel 8.0;"""
oConn.Close
				
테이블 명명 규칙

Excel 통합 문서에서 테이블이나 범위를 참조하는 몇 가지 방법은 다음과 같습니다.
  • 시트 이름 뒤에 달러 기호를 사용합니다(예: [Sheet1$] 또는 [My Worksheet$]). 이런 식으로 참조되는 통합 문서 테이블은 사용되는 통합 문서의 전체 범위로 구성됩니다.
    oRS.Open "Select * from [Sheet1$]", oConn, adOpenStatic
    					
  • 이름이 정의된 범위를 사용합니다(예: [Table1]).
    oRS.Open "Select * from Table1", oConn, adOpenStatic
    					
  • 특정 주소로 정의된 범위를 사용합니다(예: [Sheet1$A1:B10]).
    oRS.Open "Select * from [Sheet1$A1:B10]", oConn, adOpenStatic
    					
테이블 헤더

Excel 통합 문서에서 범위의 첫 번째 행은 기본적으로 헤더 행이나 필드 이름으로 간주됩니다. 첫 번째 범위에 헤더가 포함되어 있지 않으면 연결 문자열의 확장 속성에서 HDR=NO를 지정할 수 있습니다. 첫 번째 행에 헤더가 없으면 OLE DB 공급자가 필드 이름을 자동으로 지정합니다(F1은 첫 번째 필드를 나타내고 F2는 두 번째 필드를 나타내는 방식으로 지정).

데이터 형식

기존 데이터베이스와 달리 Excel 테이블에 열에 대한 데이터 형식을 직접 지정할 수 있는 방법은 없습니다. 대신 OLE DB 공급자는 필드의 데이터 형식을 "추정"하기 위해 열에 있는 제한된 수의 행을 검색합니다. 검색하는 행 수는 기본적으로 8행입니다. 연결 문자열의 확장 속성에서 MAXSCANROWS 설정을 1에서 16 사이의 값으로 지정하여 검색할 행 수를 변경할 수 있습니다.

예제에 포함된 파일

ExcelADO.exe 파일에는 Visual Basic 표준 EXE 프로젝트, Active Server Pages(ASP), 템플릿 역할을 하는 Excel 97 및 Excel 2000 통합 문서, Microsoft Access 2000 데이터베이스가 포함되어 있습니다. 포함된 파일은 다음과 같습니다.

Visual Basic 표준 EXE 프로젝트 파일
  • ExcelADO.vbp
  • Form1.frm
  • Form1.frx
Active Server Pages
  • EmpData.asp
  • Orders.asp
Microsoft Excel 통합 문서
  • OrdersTemplate.xls
  • EmpDataTemplate.xls
  • ProductsTemplate.xls
  • SourceData.xls
Microsoft Access 데이터베이스
  • Data.mdb

예제 코드를 사용하는 방법

.exe 파일의 내용물을 폴더로 추출합니다.

Visual Basic 프로젝트를 사용하는 방법
  1. Visual Basic에서 ExcelADO.vbp 파일을 엽니다.
  2. 프로젝트 메뉴에서 참조를 선택한 다음 Microsoft ADO Ext. for DDL and SecurityMicrosoft ActiveX Data Objects Library에 대한 참조를 설정합니다. 이 예제 코드는 ADO 2.5 및 ADO 2.6에서 작동하므로 사용 중인 컴퓨터에 적합한 버전을 선택합니다.
  3. F5 키를 눌러 프로그램을 실행합니다. 데모용 폼이 나타납니다.
  4. Sample 1을 누릅니다. 이 예제 코드는 OrdersTemplate.xls의 복사본을 만든 다음 ADO를 사용하여 통합 문서에 연결하고 통합 문서에서 정의된 범위인 테이블의 레코드 집합을 엽니다. 범위의 이름은 Orders_Table입니다. 이 범위는 ADO AddNew/Update 메서드를 사용하여 통합 문서의 정의된 범위에 레코드나 행을 추가합니다. 행 추가가 완료되면 ADO 연결이 닫히고 통합 문서가 Microsoft Excel에 표시됩니다. 이렇게 하려면 다음 단계를 수행하십시오.
    1. Excel의 삽입 메뉴에서 이름을 선택한 다음 정의를 선택합니다.
    2. 정의된 이름 목록에서 Orders_Table을 선택합니다. 정의된 이름은 새로 추가된 레코드를 포함하고 있습니다. 정의된 이름은 Excel의 OFFSET 함수와 함께 사용되어 통합 문서에 추가된 데이터에서 합계를 계산합니다.
    3. Microsoft Excel을 종료하고 Visual Basic 응용 프로그램으로 돌아옵니다.
  5. Sample 2를 누릅니다. 이 예제 코드는 EmpDataTemplate.xls의 복사본을 만든 다음 ADO를 사용하여 통합 문서에 연결하고 ADO 연결의 Execute 메서드를 사용하여 통합 문서에 데이터를 삽입합니다(SQL에서 INSERT INTO). 데이터는 통합 문서의 정의된 범위나 테이블에서 추가됩니다. 데이터가 전송되면 연결이 닫히고 생성된 통합 문서가 Excel에 표시됩니다. 통합 문서를 검토한 후 Microsoft Excel을 종료하고 Visual Basic 응용 프로그램으로 돌아옵니다.

  6. Sample 3을 누릅니다. 이 코드 예제는 ProductsTemplate.xls의 복사본을 만들고 Microsoft ADOX(ADO Extensions 2.1 for DDL and Security) 개체 라이브러리를 사용하여 통합 문서에 새 테이블이나 새 통합 문서를 추가합니다. 그런 다음 새 테이블에 대한 ADO 레코드 집합을 얻고 AddNew/Update 메서드를 사용하여 데이터를 추가합니다. 행 추가가 완료되면 ADO 연결이 닫히고 통합 문서가 Excel에 표시됩니다. 통합 문서에 대한 Open 이벤트에는 VBA 매크로 코드가 포함되어 있습니다. 매크로는 통합 문서가 열릴 때 실행됩니다. 통합 문서에 새 "Products" 워크시트가 있으면 매크로 코드는 이 워크시트의 서식을 지정한 다음 삭제됩니다. 이 방식을 통해 웹 개발자는 웹 서버에서 클라이언트로 서식 지정 코드를 옮길 수 있습니다. 웹 응용 프로그램은 데이터가 포함된 서식이 지정된 통합 문서를 클라이언트로 보낼 수 있으며, 템플릿에서는 가능하지 않을 수도 있는 "조건부" 서식 지정을 수행할 매크로 코드가 클라이언트에서 실행될 수 있도록 합니다.

    참고: 매크로 코드를 검토하려면 ProductsTemplate.xls에 대한 VBAProject에서 ThisWorkbook 모듈을 보십시오.

  7. Sample 4를 누릅니다. 이 예제 코드는 Sample 1과 같은 결과를 나타내지만 데이터 전송에 사용하는 방법은 약간 다릅니다. Sample 1에서는 레코드나 행이 한 번에 하나씩 워크시트에 추가됩니다. Sample 4는 Excel 테이블을 Access 데이터베이스에 연결하고 추가 쿼리(또는 INSERT INTO..SELECT FROM)를 실행하여 Access 데이터베이스의 테이블에서 Excel 테이블로 레코드를 추가함으로써 대량으로 레코드를 추가합니다. 전송이 완료되면 Excel 테이블이 Access 데이터베이스에서 분리되고 생성된 통합 문서가 Excel에 표시됩니다. Excel을 종료하고 Visual Basic 응용 프로그램으로 돌아옵니다.

  8. 마지막 코드 예제에서는 Excel 통합 문서에서 데이터를 읽는 방법을 보여 줍니다. 드롭다운 목록에서 테이블을 선택한 다음 Sample 5를 누릅니다. 직접 실행 창에 선택한 테이블의 내용이 표시됩니다. 테이블의 전체 워크시트("Sheet1$" 또는 "Sheet2$")를 선택하면 직접 실행 창에 해당 워크시트의 사용된 범위에 대한 내용이 표시됩니다. 사용된 범위가 반드시 워크시트의 행 1, 열 1에서 시작하는 것은 아닙니다. 사용된 범위는 데이터가 포함된 워크시트의 맨 왼쪽 위에 있는 셀에서 시작합니다.

    특정한 범위 주소나 정의된 범위를 선택하면 직접 실행 창에 워크시트의 해당 범위에 대한 내용만 표시됩니다.
Active Server Pages(ASP)를 사용하는 방법
  1. 웹 서버의 홈 디렉터리에서 ExcelADO라는 새 폴더를 만듭니다. 홈 디렉터리의 기본 경로는 C:\InetPut\WWWRoot입니다.
  2. 이전 단계에서 만든 폴더로 다음 파일을 복사합니다.
    • EmpData.asp
    • Orders.asp
    • Data.mdb
    • EmpDataTemplate.xls
    • OrdersTemplate.xls

  3. 이 예제 코드의 ASP 스크립트는 FileSystemObjectCopy 메서드로 통합 문서 템플릿의 복사본을 만듭니다. Copy 메서드가 성공하려면 스크립트에 액세스하는 클라이언트는 ASP가 포함된 폴더에 쓰기 권한을 갖고 있어야 합니다.
  4. Orders.asp(즉, http://YourServer/ExcelADO/Orders.ASP)로 이동하면 Visual Basic 응용 프로그램의 Sample 1에 있는 것과 비슷한 Excel 통합 문서가 브라우저에 표시됩니다.
  5. EmpData.asp(즉, http://YourServer/ExcelADO/EmpData.ASP)로 이동하면 Visual Basic 응용 프로그램의 Sample 2에 있는 것과 비슷한 Excel 통합 문서가 브라우저에 표시됩니다.
(c) Microsoft Corporation 2000, All Rights Reserved. 기고: Lori B. Turner, Microsoft Corporation.

참조

자세한 내용은 다음 Microsoft 웹 사이트에서 "Automating Office 97 and Office 2000" 백서를 참조하십시오.
http://support.microsoft.com/support/officedev/automation.asp
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
195951 HOWTO: ASP에서 ADO를 사용하여 Excel 데이터 쿼리 및 업데이트
194124 PRB: DAO OpenRecordset을 사용할 때 Excel 값이 NULL로 반환된다
193998 HOWTO: ASP에서 이진 데이터 읽기 및 표시
247412 INFO: Excel에서 Visual Basic으로 데이터를 전송하는 방법
257819 HOWTO: Visual Basic 또는 VBA의 Excel 데이터로 ADO 사용




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 278973 - 마지막 검토: 2006년 5월 30일 화요일 - 수정: 3.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Excel 2000 Standard Edition
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Active Server Pages 4.0
키워드:?
kbdownload kbprogramming kbfile kbautomation KB278973

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com