Como utilizar MFC para automatizar o Excel 2000 e Excel 2002 e obter uma matriz de um intervalo no Excel 2000 e Excel 2002

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 186122
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sumário
Este artigo demonstra como automatizar o Microsoft Excel e devolver os valores de um intervalo multi-cell a uma matriz.
Mais Informação
Para devolver os valores de um intervalo multi-cell sem consultar as células uma a uma, tem de utilizar a função de membro GetValue do objecto Range para devolver os valores para uma VARIANT. Em seguida, constrói uma SEGURA baseada VARIANT devolvido por GetValue. Depois de ter a SEGURA, pode aceder os elementos utilizando GetElement. Os seguintes passos ilustram este processo e demonstram como poderá aceder cadeia e elementos numéricos.

Notas para automatizar o Microsoft Excel 2000 e 2002

O código de exemplo neste artigo utiliza wrappers de classe gerados a partir da biblioteca de objectos da Excel 97 (Excel 8.olb). Com ligeira modificação, este código pode ser aplicado a um cliente de automatização utiliza wrappers de classe para o Excel 2000 (Excel9.olb) ou o Excel 2002 (Excel.olb). Para obter informações adicionais sobre como utilizar o código de exemplo descrito neste artigo com o Microsoft Excel 2000 ou a biblioteca de tipos de 2002, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
224925INFO: Bibliotecas de tipos para o Office podem alterar com nova versão

Passos para criar projecto

  1. No Microsoft Excel, crie um novo livro. Preencher células A1:C8 com uma mistura de cadeia e dados numéricos. Guarde o livro como "c:\test.xls" e saia do Microsoft Excel.
  2. Siga os passos 1 a 12 no seguinte artigo na Microsoft Knowledge Base para criar um projecto de exemplo que utiliza o IDispatch interfaces e funções de membro definidas na biblioteca de tipos Excel8.olb:
    178749Como criar projecto de automatização com MFC e uma biblioteca de tipos
  3. Na parte superior do ficheiro AutoProjectDlg.cpp, adicione a seguinte linha:
          #include "excel8.h"					
  4. Adicione o seguinte código ao CAutoProjectDlg::OnRun() no ficheiro AutoProjectDlg.cpp:

    Código de exemplo

          // OLE Variant for Optional.      COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);      _Application objApp;      _Workbook objBook;      Workbooks objBooks;      Worksheets objSheets;      _Worksheet objSheet;      Range objRange;      VARIANT ret;      // Instantiate Excel and open an existing workbook.      objApp.CreateDispatch("Excel.Application");      objBooks = objApp.GetWorkbooks();      objBook = objBooks.Open("C:\\Test.xls",                VOptional, VOptional, VOptional, VOptional,                VOptional, VOptional, VOptional, VOptional,                VOptional, VOptional, VOptional, VOptional);      objSheets = objBook.GetWorksheets();      objSheet = objSheets.GetItem(COleVariant((short)1));      //Get the range object for which you wish to retrieve the      //data and then retrieve the data (as a variant array, ret).      objRange = objSheet.GetRange(COleVariant("A1"), COleVariant("C8"));      ret = objRange.GetValue();      //Create the SAFEARRAY from the VARIANT ret.      COleSafeArray sa(ret);      //Determine the array's dimensions.      long lNumRows;      long lNumCols;      sa.GetUBound(1, &lNumRows);      sa.GetUBound(2, &lNumCols);      //Display the elements in the SAFEARRAY.      long index[2];      VARIANT val;      int r, c;      TRACE("Contents of SafeArray\n");      TRACE("=====================\n\t");      for(c=1;c<=lNumCols;c++)      {         TRACE("\t\tCol %d", c);      }      TRACE("\n");      for(r=1;r<=lNumRows;r++)      {         TRACE("Row %d", r);         for(c=1;c<=lNumCols;c++)         {            index[0]=r;            index[1]=c;            sa.GetElement(index, &val);            switch(val.vt)            {            case VT_R8:               {                  TRACE("\t\t%1.2f", val.dblVal);                  break;               }            case VT_BSTR:               {                  TRACE("\t\t%s",(CString)val.bstrVal);                  break;               }            case VT_EMPTY:               {                  TRACE("\t\t<empty>");                  break;               }            }         }         TRACE("\n");      }      //Close the workbook without saving changes      //and quit Microsoft Excel.      objBook.Close(COleVariant((short)FALSE), VOptional, VOptional);      objApp.Quit();					
  5. Compile o projecto e executá-la.
  6. Clique em executar. Os valores em células A1:C8 são apresentados na janela de resultados.
Referências
Para informações adicionais sobre como automatizar o Microsoft Excel utilizando MFC, clique nos números de artigo existentes abaixo para visualizar os artigos na Microsoft Knowledge Base:
186120Como utilizar MFC para automatizar o Excel e preencher um intervalo com uma matriz
184663Como incorporar e automatizar a folha de cálculo Microsoft Excel com MFC
179706Como utilizar MFC para automatizar o Excel e criar/formatar um novo livro
178781COMO: Automatizar o Excel utilizar funções de folha de cálculo e MFC
178783COMO: Utilizar MFC para criar um gráfico do Microsoft Excel
167668Como passar um SafeArray de cadeias de VARIANT *

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 186122 - Última Revisão: 12/05/2015 08:42:08 - Revisão: 5.1

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 kbprogramming kbfunctions kbautomation kbhowto kbinterop KB186122 KbMtpt
Comentários