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

MFC 배열 범위 채우기 및 Excel을 자동화하는 방법

중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

186120
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
요약
이 문서에서는 Microsoft Excel을 자동화하는 값의 배열을 사용하여 여러 셀 범위를 채우는 방법을 보여 줍니다.
추가 정보
--하나씩 셀을 채우지 않고 여러 셀 범위를 채우려면 2차원 variant Range 개체에 대해 SetValue 매크로 함수를 호출하여 Excel로 전달하는 SAFEARRAY 만들어야 합니다. 다음 단계에서는 이 프로세스를 보여 줍니다.

Microsoft Excel 2000 및 2002 자동화 노트

이 문서의 예제 코드는 Excel 97 개체 라이브러리 (Excel 8.olb) 에서 생성된 클래스 래퍼를 사용합니다. 약간의 수정이 이 코드 (Excel9.olb) Excel 2000 또는 Excel 2002 (Excel.olb) 클래스 래퍼를 사용하는 자동화 클라이언트를 적용할 수 있습니다. Microsoft Excel 2000 또는 2002 형식 라이브러리를 사용하여 이 문서에서 설명하는 예제 코드를 사용하는 방법에 대한 자세한 내용은 Microsoft 기술 자료 문서를 보려면 다음 문서 번호를 누르십시오.
224925정보: 형식 라이브러리 Office 프로그램 새 릴리스 변경될 수 있다

프로젝트를 만드는 단계

  1. 1-12단계 사용하는 경우 IDispatch 인터페이스 및 멤버 함수를 Excel8.olb 형식 라이브러리에 정의된 예제 프로젝트를 만들려면 Microsoft 기술 자료의 다음 문서에서 다음과 같이 하십시오.
    178749MFC 및 형식 라이브러리를 사용하여 자동화 프로젝트를 만드는 방법
  2. 4단계와 5단계를 178749 부모 아티클 중 만든 대화 상자 지정한 대로 속성 사용하여 다음 컨트롤을 추가하십시오. 또한 해당 멤버 변수 추가:
                                      Member                Member      Control   Name              Variable Type         Variable Name      -----------------------------------------------------------------      Edit      IDC_STARTINGCELL  m_sStartingCell       CString      Edit      IDC_NUMROWS       m_iNumRows            short      Edit      IDC_NUMCOLS       m_iNumCols            short      CheckBox  IDC_STRING        m_bFillWithStrings    BOOL					
  3. AutoProjectDlg.cpp 파일 맨 위에 다음 줄을 추가합니다:
          #include "excel8.h"					
  4. CAutoProjectDlg::OnRun() AutoProjectDlg.cpp 파일에 다음 코드를 추가하십시오.

    예제 코드

          // OLE Variant for Optional.      COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);      _Application objApp;      _Workbook objBook;      Workbooks objBooks;      Worksheets objSheets;      _Worksheet objSheet;      Range range;      if(!UpdateData(TRUE))      {         return;      }      // Instantiate Excel and start a new workbook.      objApp.CreateDispatch("Excel.Application");      objBooks = objApp.GetWorkbooks();      objBook = objBooks.Add(VOptional);      objSheets = objBook.GetWorksheets();      objSheet = objSheets.GetItem(COleVariant((short)1));      //Get the range where the starting cell has the address      //m_sStartingCell and it's dimensions are m_iNumRows x m_iNumCols.      range = objSheet.GetRange(COleVariant(m_sStartingCell),                                COleVariant(m_sStartingCell));      range = range.GetResize(COleVariant(m_iNumRows),                              COleVariant(m_iNumCols));      //*** Fill the range with an array of values.      //Create the SAFEARRAY.      COleSafeArray saRet;      DWORD numElements[2];      numElements[0]= m_iNumRows;   //Number of rows in the range.      numElements[1]= m_iNumCols;   //Number of columns in the range.      if(m_bFillWithStrings)      {         saRet.Create(VT_BSTR, 2, numElements);      }      else      {         saRet.Create(VT_R8, 2, numElements);      }      //Fill the SAFEARRAY.      long index[2];      long iRow;      long iCol;      for(iRow=0;iRow<=m_iNumRows-1;iRow++)      {         for(iCol=0;iCol<=m_iNumCols-1;iCol++)         {            index[0] = iRow;            index[1] = iCol;            if(m_bFillWithStrings)      //Fill with Strings.            {               VARIANT v;               CString s;               VariantInit(&v);               v.vt = VT_BSTR;               s.Format("r%dc%d", iRow, iCol);               v.bstrVal = s.AllocSysString();               saRet.PutElement(index, v.bstrVal);               SysFreeString(v.bstrVal);               VariantClear(&v);            }            else                     //Fill with Numbers.            {               double d;               d = (iRow*1000) + iCol;               saRet.PutElement(index, &d);            }         }      }      //Set the range value to the SAFEARRAY.      range.SetValue(COleVariant(saRet));      saRet.Detach();      //Return control of Excel to the user.      objApp.SetVisible(TRUE);      objApp.SetUserControl(TRUE);					
  5. 컴파일 및 프로젝트 실행.
  6. 대화 상자의 컨트롤에 대한 다음 값 지정:
          Control               Contents      ------------------------------      IDC_STARTINGCELL      A1      IDC_NUMROWS           10      IDC_NUMCOLS           5      IDC_STRING            True						
    확인을 클릭하십시오.

    결과: 있는 새 통합 문서가 생성되고 첫 번째 워크시트의 셀을 A1:E10 문자열 값으로 채워집니다.
  7. 대화 상자의 컨트롤에 대한 다음 값 지정:
          Control               Contents      ------------------------------      IDC_STARTINGCELL      C3      IDC_NUMROWS           2      IDC_NUMCOLS           9      IDC_STRING            False						
    확인을 클릭하십시오.

    결과: 있는 새 통합 문서가 생성되고 첫 번째 워크시트의 셀을 C3:K4 숫자 값으로 채워집니다.
참조
MFC를 사용하여 Microsoft Excel을 자동화하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
186122MFC를 사용하여 Excel 자동화 및 배열에 있는 Range 개체를 얻는 방법

184663포함 및 MFC 사용하여 Microsoft Excel 워크시트 자동화하는 방법

179706MFC 사용하여 Excel 자동화 및 새 통합 문서 만들기 서식

178781MFC 및 워크시트 함수를 사용하여 Excel을 자동화하는 방법

178783MFC를 사용하여 Microsoft Excel 차트 만드는 방법

경고: 이 문서는 자동으로 번역되었습니다.

속성

문서 ID: 186120 - 마지막 검토: 12/05/2015 08:42:02 - 수정: 4.2

Microsoft Excel 2000 Standard Edition, Microsoft Visual C++ 5.0 Enterprise Edition, Microsoft Visual C++ 6.0 Enterprise Edition, Microsoft Visual C++ 5.0 Professional Edition, Microsoft Visual C++ 6.0 Professional Edition, Microsoft Visual C++, 32-bit Learning Edition 6.0, Microsoft Excel 2002 Standard Edition, Microsoft Excel 97 Standard Edition

  • kbnosurvey kbarchive kbmt kbautomation kbcode kbhowto kbinterop KB186120 KbMtko
피드백