segunda-feira, 19 de novembro de 2012

wxAutomationObject – Parte 5 – Contando o número de Workbooks abertos em uma Instância

Hoje vamos criar uma função simples para contar o número de Workbooks abertos na instância do Excel que estamos trabalhando.

Na classe wxAutomationExcel em public digitamos a declaração da função.

int wxAutomationExcel::GetWorkbookCount()

no arquivo mexcel.cpp sua contrução.

int wxAutomationExcel::GetWorkbookCount()
{
     const wxVariant workbooksCountV = this->GetProperty(wxT("Workbooks.Count"));
   
     if (workbooksCountV.IsNull())
    {
        wxLogError(wxT("Problemas ao executar a operação"));
        return 0;
    }

    const long workbooksCount = workbooksCountV;

    return workbooksCount;
}

Aqui estamos trabalhando mais uma vez com propriedades, no caso, chamamos a propriedade Workbooks.Count, ela retornará um long como resultado, veja que se meu wxVariant for igual a nulo, eu retorno o 0, eu faço assim, pois se existirem Workbooks na instância, ele será maior que zero.

Para testar a função:

wxAutomationExcel m_excel;

//Primeiro pegamos a instância do Excel,
//se ela não existir eu retorno Nulo
if(!m_excel.GetExcelInstance())
     return;

//Pego o número de Workbooks abertos...
int getWBCount = m_excel.GetWorkbookCount();

//Exibo uma mensagem com o valor.
wxMessageBox(wxString::Format("Número de Workbooks abertos\n%d", getWBCount));

Lembrando que essa função conta apenas o número de Workbooks que estão abertos na instância que estamos controlando, se tivéssemos 5 instâncias rodando, cada uma com 1 Workbook aberto, o valor retornado seria 1.

Uma imagem com o resultado do teste, veja que tenho 3 Workbooks abertos, todos na instância que eu estou controlando.