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

기술 자료 번역 기술 자료 번역
기술 자료: 301982 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 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 Sub
    Err_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) 웹 사이트를 방문하십시오.
Visual Studio를 사용한 Microsoft Office 개발(영문)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnoxpta/html/vsofficedev.asp
Excel 및 Visual Basic에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
219151 Visual Basic에서 Microsoft Excel을 자동화하는 방법




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

속성

기술 자료: 301982 - 마지막 검토: 2007년 1월 17일 수요일 - 수정: 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
키워드:?
kbhowto kbautomation kbpia KB301982

피드백 보내기

 

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