현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

Visual Basic .NET에서 Microsoft Excel을 자동화하는 방법

Office 2003에 대한 지원이 종료되었습니다.

Microsoft는 2014년 4월 8일 Office 2003에 대한 지원을 종료했습니다. 이러한 변경에 따라 해당 소프트웨어 업데이트 및 보안 옵션이 영향을 받습니다. 사용자에게 미치는 영향 및 계속 보호를 받는 방법에 대해 알아보십시오.

이 문서는 이전에 다음 ID로 출판되었음: KR301982
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
요약
이 문서에서는 Microsoft Visual Basic .NET을 사용하여 Microsoft Excel의 자동화 클라이언트를 만드는 방법을 보여줍니다.
추가 정보
자동화는 Visual Basic과 같은 언어로 작성된 응용 프로그램에서 다른 응용 프로그램을 프로그래밍 방식으로 제어할 수 있게 해주는 프로세스입니다. Excel에 자동화를 사용하면 새 통합 문서 만들기, 통합 문서에 데이터 추가 또는 차트 만들기 같은 작업을 수행할 수 있습니다. Excel과 기타 Microsoft Office 응용 프로그램에서는 사용자 인터페이스를 통해 수동으로 수행할 수 있는 작업은 모두 자동화를 사용하여 프로그래밍 방식으로 수행할 수 있습니다.

Excel에서는 이러한 프로그래밍 방식 기능을 개체 모델을 통해 제공합니다. 개체 모델은 Excel의 논리 구성 요소와 같은 역할을 하는 클래스와 메서드의 모음을 말합니다. 예를 들어 응용 프로그램 개체, 통합 문서 개체 및 워크시트 개체가 있다면 이들은 각각 Excel의 해당 구성 요소의 기능을 포함하고 있습니다. Visual Basic .NET에서 개체 모델에 액세스하려면 형식 라이브러리에 대한 프로젝트 참조를 설정하면 됩니다.

이 문서에서는 Excel 형식 라이브러리에 대한 Visual Basic .NET의 적절한 프로젝트 참조를 설정하는 방법을 보여주고 Excel을 자동화하기 위한 예제 코드를 제공합니다.

Microsoft Excel의 자동화 클라이언트 만들기

  1. Microsoft Visual Studio .NET을 시작합니다.
  2. 파일 메뉴에서 새로 만들기를 누른 다음 프로젝트를 누릅니다. Visual Basic 프로젝트 형식에서 Windows 응용 프로그램을 선택합니다. 기본적으로 Form1이 만들어집니다.
  3. Microsoft Excel Object Library에 대한 참조를 추가합니다. 참조를 추가하려면 다음과 같이 하십시오.
    1. 프로젝트 메뉴에서 참조 추가를 누릅니다.
    2. COM 탭에서 Microsoft Excel Object Library를 찾은 다음 선택을 누릅니다.

      참고 Microsoft Office 2003에는 PIA(기본 Interop 어셈블리)가 포함되어 있습니다. Microsoft Office XP에는 PIA가 포함되어 있지 않지만 다운로드할 수 있습니다. Office XP PIA에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
      328912 Microsoft Office XP PIA를 다운로드할 수 있다
    3. 참조 추가 대화 상자에서 확인을 눌러 선택한 내용을 적용합니다.
  4. 보기 메뉴에서 도구 상자를 선택하여 도구 상자를 표시한 다음 Form1에 Button 컨트롤을 추가합니다.
  5. Button1을 두 번 누릅니다. 해당 폼에 대한 코드 창이 나타납니다.
  6. 코드 창에서
        Private Sub Button1_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button1.Click    End Sub					
    위의 코드를 아래와 같이 바꿉니다.
        Private Sub Button1_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button1.Click        Dim oXL As Excel.Application        Dim oWB As Excel.Workbook        Dim oSheet As Excel.Worksheet        Dim oRng As Excel.Range        ' Start Excel and get Application object.        oXL = CreateObject("Excel.Application")        oXL.Visible = True        ' Get a new workbook.        oWB = oXL.Workbooks.Add        oSheet = oWB.ActiveSheet        ' Add table headers going cell by cell.        oSheet.Cells(1, 1).Value = "First Name"        oSheet.Cells(1, 2).Value = "Last Name"        oSheet.Cells(1, 3).Value = "Full Name"        oSheet.Cells(1, 4).Value = "Salary"        ' Format A1:D1 as bold, vertical alignment = center.        With oSheet.Range("A1", "D1")            .Font.Bold = True            .VerticalAlignment = Excel.XlVAlign.xlVAlignCenter        End With        ' Create an array to set multiple values at once.        Dim saNames(5, 2) As String        saNames(0, 0) = "John"        saNames(0, 1) = "Smith"        saNames(1, 0) = "Tom"        saNames(1, 1) = "Brown"        saNames(2, 0) = "Sue"        saNames(2, 1) = "Thomas"        saNames(3, 0) = "Jane"        saNames(3, 1) = "Jones"        saNames(4, 0) = "Adam"        saNames(4, 1) = "Johnson"        ' Fill A2:B6 with an array of values (First and Last Names).        oSheet.Range("A2", "B6").Value = saNames        ' Fill C2:C6 with a relative formula (=A2 & " " & B2).        oRng = oSheet.Range("C2", "C6")        oRng.Formula = "=A2 & "" "" & B2"        ' Fill D2:D6 with a formula(=RAND()*100000) and apply format.        oRng = oSheet.Range("D2", "D6")        oRng.Formula = "=RAND()*100000"        oRng.NumberFormat = "$0.00"        ' AutoFit columns A:D.        oRng = oSheet.Range("A1", "D1")        oRng.EntireColumn.AutoFit()        ' Manipulate a variable number of columns for Quarterly Sales Data.        Call DisplayQuarterlySales(oSheet)        ' Make sure Excel is visible and give the user control        ' of Excel's lifetime.        oXL.Visible = True        oXL.UserControl = True        ' Make sure that you release object references.        oRng = Nothing        oSheet = Nothing        oWB = Nothing        oXL.Quit()        oXL = Nothing        Exit SubErr_Handler:        MsgBox(Err.Description, vbCritical, "Error: " & Err.Number)    End Sub    Private Sub DisplayQuarterlySales(ByVal oWS As Excel.Worksheet)        Dim oResizeRange As Excel.Range        Dim oChart As Excel.Chart        Dim oSeries As Excel.Series        Dim iNumQtrs As Integer        Dim sMsg As String        Dim iRet As Integer        ' Determine how many quarters to display data for.        For iNumQtrs = 4 To 2 Step -1            sMsg = "Enter sales data for" & Str(iNumQtrs) & " quarter(s)?"            iRet = MsgBox(sMsg, vbYesNo Or vbQuestion _               Or vbMsgBoxSetForeground, "Quarterly Sales")            If iRet = vbYes Then Exit For        Next iNumQtrs        ' Starting at E1, fill headers for the number of columns selected.        oResizeRange = oWS.Range("E1", "E1").Resize(ColumnSize:=iNumQtrs)        oResizeRange.Formula = "=""Q"" & COLUMN()-4 & CHAR(10) & ""Sales"""        ' Change the Orientation and WrapText properties for the headers.        oResizeRange.Orientation = 38        oResizeRange.WrapText = True        ' Fill the interior color of the headers.        oResizeRange.Interior.ColorIndex = 36        ' Fill the columns with a formula and apply a number format.        oResizeRange = oWS.Range("E2", "E6").Resize(ColumnSize:=iNumQtrs)        oResizeRange.Formula = "=RAND()*100"        oResizeRange.NumberFormat = "$0.00"        ' Apply borders to the Sales data and headers.        oResizeRange = oWS.Range("E1", "E6").Resize(ColumnSize:=iNumQtrs)        oResizeRange.Borders.Weight = Excel.XlBorderWeight.xlThin        ' Add a Totals formula for the sales data and apply a border.        oResizeRange = oWS.Range("E8", "E8").Resize(ColumnSize:=iNumQtrs)        oResizeRange.Formula = "=SUM(E2:E6)"        With oResizeRange.Borders(Excel.XlBordersIndex.xlEdgeBottom)            .LineStyle = Excel.XlLineStyle.xlDouble            .Weight = Excel.XlBorderWeight.xlThick        End With        ' Add a Chart for the selected data.        oResizeRange = oWS.Range("E2:E6").Resize(ColumnSize:=iNumQtrs)        oChart = oWS.Parent.Charts.Add        With oChart            .ChartWizard(oResizeRange, Excel.XlChartType.xl3DColumn, , Excel.XlRowCol.xlColumns)            oSeries = .SeriesCollection(1)            oSeries.XValues = oWS.Range("A2", "A6")            For iRet = 1 To iNumQtrs                .SeriesCollection(iRet).Name = "=""Q" & Str(iRet) & """"            Next iRet            .Location(Excel.XlChartLocation.xlLocationAsObject, oWS.Name)        End With        ' Move the chart so as not to cover your data.        With oWS.Shapes.Item("Chart 1")            .Top = oWS.Rows(10).Top            .Left = oWS.Columns(2).Left        End With        ' Free any references.        oChart = Nothing        oResizeRange = Nothing    End Sub					
  7. 다음 코드를 Form1.vb의 맨 위에 추가합니다.
    Imports Microsoft.Office.Core					

자동화 클라이언트 테스트

  1. F5 키를 눌러 프로그램을 빌드하고 실행합니다.
  2. 폼에서 Button1을 누릅니다. 프로그램이 Excel을 시작하고 새 워크시트에 데이터를 채웁니다.
  3. 분기별 판매량 데이터를 입력할 것인지 묻는 메시지가 나타나면 를 누릅니다. 분기별 데이터에 연결된 차트가 워크시트에 추가됩니다.
참조
자세한 내용은 다음 MSDN(Microsoft Developer Network) 웹 사이트를 방문하십시오. Excel 및 Visual Basic에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
219151 Visual Basic에서 Microsoft Excel을 자동화하는 방법




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

문서 ID: 301982 - 마지막 검토: 12/06/2015 03:28:01 - 수정: 8.1

Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition

  • kbnosurvey kbarchive kbhowto kbautomation kbpia KB301982
피드백