Compartilhar via


Programação com a API de C no Excel

Aplica-se a: Excel 2013 | Office 2013 | Visual Studio

Use o XLL Software Development Kit e a API de C do Microsoft Excel 2013 para criar fun��es de planilha de alto desempenho para o Excel 2013. As atualiza��es para a API de C do Excel 2013 refletem o suporte cont�nuo para usu�rios para os quais o desempenho da funcionalidade de terceiros ou interna � essencial.

Interfaces de Programação do Excel

O Excel oferece v�rias op��es para o desenvolvimento de aplicativos que fazem interface com ele. As interfaces de programa��o do Excel foram adicionadas �s vers�es anteriores na seguinte ordem:

  • Linguagem de macro XLM: A primeira linguagem acess�vel ao usu�rio para a extens�o do Excel e a base da API de C. Embora ainda ofere�a suporte para o Excel�2010, o XLM foi substitu�do pelo Visual Basic for Applications (VBA) h� muito tempo.

  • API de C e XLLs: As DLLs s�o integradas ao Excel. Essas DLLs oferecem a interface mais r�pida e mais direta para a adi��o de fun��es de planilha de alto desempenho, embora �s custas de alguma complexidade em compara��o com as tecnologias mais recentes.

  • VBA: Objetos de c�digo do Visual Basic que est�o associados a objetos de pasta de trabalho do Excel. O VBA permite intercepta��es de eventos, a personaliza��o e a adi��o de fun��es e comandos definidos pelo usu�rio. O VBA � a mais comumente usada e a mais facilmente dispon�vel das op��es de extensibilidade.

  • COM: O padr�o de interoperabilidade de aplicativos baseados no Windows por meio do qual o Excel exp�e seus eventos e objetos. O VBA usa COM para interagir com o Excel. O Excel exporta bibliotecas de tipo COM que podem ajud�-lo a criar recursos e aplicativos de c�digo C++ COM que podem controlar o Excel externamente.

  • O Microsoft .NET Framework: O ambiente de c�digo gerenciado para v�rias linguagens projetado para o desenvolvimento r�pido de aplicativos para ambientes distribu�dos. A linguagem de programa��o prim�ria para c�digo baseada no .NET Framework � C#, embora muitas linguagens possam ser compiladas para a linguagem intermedi�ria da Microsoft (MSIL). O Excel 2013 pode acessar recursos de c�digo contidos em assemblies do .NET Framework.

Quando Usar a API de C

A principal raz�o para gravar XLLs e usar a API de C � criar fun��es de planilha de alto desempenho. Embora as fun��es XLL sejam frequentemente chamadas de definidas pelo usu�rio, o investimento em tempo para obter o entendimento e as habilidades necess�rias para gravar XLLs fazem com que essa tecnologia n�o seja pr�tica para a maioria dos usu�rios. No entanto, os aplicativos de fun��es de alto desempenho, e no Excel 2013, a capacidade de gravar interfaces de v�rios threads em recursos avan�ados do servidor, fazem disso uma parte muito importante da extensibilidade do Excel.

A revisão da API de C introduzida no Excel 2007 trata principalmente dos aspectos relacionados a cálculos de alto desempenho, em vez de recursos como a interface do usuário.

Gravando funções de planilha de alto desempenho definidas pelo usuário

A API C do Excel é a escolha ideal quando você deseja criar funções de planilha de alto desempenho criando suplementos XLL. A API C fornece o acesso mais direto aos dados da planilha. Os XLLs oferecem ao Excel o acesso mais direto aos recursos da DLL. O desempenho das XLLs é ainda mais aprimorado no Excel 2013 pela adição de novos tipos de dados e, mais importante, pelo suporte para executar funções definidas pelo usuário em servidores clusterizados.

Trabalhar com XLLs tem um pre�o: A API de C n�o tem os recursos de desenvolvimento r�pido de n�vel superior do VBA, COM ou o .NET Framework. O gerenciamento de mem�ria � de n�vel baixo e, portanto,atribui uma maior responsabilidade ao desenvolvedor. Muitos recursos do Excel que são expostos pelo COM, tornando-os disponíveis por meio do VBA e o .NET Framework, não são expostos à API de C.

Acessando Servidores de Vários Threads Usando Funções de Planilha XLL

O rec�lculo de v�rios threads (MTR), que foi introduzido no Excel 2007, permite criar fun��es de planilha XLL seguras para threads. Use essas fun��es para acessar servidores de v�rios threads. As se��es posteriores descrevem com mais detalhes como isso pode aumentar significativamente o desempenho observado pelo usu�rio. Para usuários do Excel que muitas vezes precisam acessar uma grande quantidade de energia de processamento, a combinação de um XLL que usa MTR e um servidor de cálculo avançada fornece a solução de desempenho mais elevado.

Personalizando a interface de usuário do Excel

Para muitas vers�es do Excel, a API de C n�o tem sido a melhor op��o para personalizar a interface do usu�rio. O VBA possui o melhor acesso a objetos e eventos do Excel. A interface do usu�rio introduzida no Excel 2007 � significativamente diferente das vers�es anteriores em apar�ncia e tecnologia subjacente. É possível personalizar melhor esta interface usando recursos de código gerenciado.

Criando aplicativos que possam ser acessados pela Internet

Os Servi�os do Excel, introduzidos com o sistema Microsoft Office de 2007, oferecem a melhor maneira de conceder aos usu�rios acesso a pastas de trabalho e a funcionalidades do Excel usando ferramentas padr�o do navegador da Web. Com linguagens e recursos de desenvolvimento do .NET Framework, essas tecnologias representam uma parte importante da implantação do Excel para usuários no futuro.

Controlando o Excel de aplicativos externos

O Excel exp�e seus objetos, m�todos e eventos por meio da interface COM. � poss�vel, portanto, usar COM para criar aplicativos independentes que podem iniciar e controlar uma sess�o do Excel ou controlar uma sess�o existente do Excel. Acesse a interface do Excel exposta por COM em v�rias linguagens de desenvolvimento, incluindo C++ e VBA. Da mesma forma, o .NET Framework e C# fornecem uma interface para o Excel que permite acessar e controlar o Excel remotamente.

Chamada assíncrona do Excel

O Excel permite que XLLs chamem a API C somente quando o Excel passou o controle para a XLL. Uma função de planilha chamada pelo Excel pode chamar de volta ao Excel usando a API C. Um comando XLL chamado pelo Excel pode chamar a API C. Funções e comandos DLL e XLL que são chamados pela VBA quando o próprio VBA foi chamado pelo Excel podem chamar a API C. Você não pode, por exemplo, definir um retorno de chamada temporizado do Windows em sua XLL e chamar a API C dela, e você não pode chamar a API C de um thread em segundo plano criado pela SUA XLL. Não é recomendável chamar o Excel de forma assíncrona usando COM de uma DLL ou XLL.

Isso � muito limitador, j� que podem haver aplicativos nos quais voc� deseja que o Excel reaja a um evento de forma ass�ncrona. Por exemplo, talvez voc� queira que o Excel recupere uma parte dos dados na Internet e recalcule sempre que esses dados forem alterados. Ou talvez voc� queira que um thread em segundo plano realize um c�lculo e fa�a com que o Excel calcule novamente assim que ele for conclu�do.

Isso pode ser feito ao fazer com que o Excel sonde altera��es ativamente, mas � ineficiente e limitador porque frequentemente envolve a interrup��o da atividade normal do Excel. � poss�vel configurar comandos repetidos com tempo limite usando a API de C ou o VBA, embora isso n�o seja uma solu��o ideal.

A condi��o ideal seria ter um processo externo mais eficiente para verificar a altera��o nos dados e que esse processo externo acionasse o Excel para recuperar a atualiza��o e realizar um rec�lculo. � poss�vel fazer isso usando um aplicativo que faz interface com o Excel usando COM. O COM n�o � restrito da mesma forma como a API de C para fazer chamadas somente quando o Excel tiver explicitamente passado o controle para ele. Os aplicativos COM podem chamar métodos do Excel sempre que o Excel estiver em um estado de prontidão, embora essas chamadas de método possam ser ignoradas se as caixas de diálogo estiverem sendo exibidas, quando os menus estiverem recolhidos ou quando uma macro estiver em execução.

A API de C e sua relação com XLM

A linguagem de macro (XLM) do Excel foi o primeiro ambiente de programa��o acess�vel ao usu�rio fornecido no Excel. Ele permitia aos usu�rios criar fun��es e comandos personalizados em folhas de macro especiais parecidas com planilhas comuns. As folhas de macro XLM ainda t�m suporte no Excel 2013. Use todas as fun��es de planilha normais como SUM e LOG em uma folha de macro, al�m dos itens a seguir que n�o podem ser inseridos em uma planilha:

  • Funções de informação do espaço de trabalho, como INFO.CÉL e INFO.PASTA.TRABALHO.

  • Funções equivalentes a comandos que permitem a automação de operações comuns de usuário, como DEFINE.NAME e PASTE.

  • Funções relacionadas a suplementos como REGISTRO.

  • Interceptações de eventos equivalentes a comandos como ON.ENTRY e ON.TIME.

  • Operações específicas da função de macro como ARGUMENTO e TEMPORÁRIO.

  • Operações de controle de fluxo como IRPARA e RETORNO.

No Excel vers�o 3, havia uma vers�o limitada da API de C. No entanto, no Excel vers�o 4, a linguagem XLM foi mapeada para a API de C. Desde ent�o, os DLLs podem chamar todas as fun��es de planilha, comandos e fun��es de informa��o das folhas de macro e configurar intercepta��es de evento. Os DLLs n�o podem chamar fun��es de controle de fluxo XLM de dentro da API de C. Esses comandos e fun��es de folhas de macro est�o documentados no arquivo da Ajuda XLMacr8.hlp (anteriormente conhecido como Macrofun.hlp). Para obter esse arquivo de ajuda, v� para o Centro de Download da Microsoft e procure por "XLMacr8.hlp".

Observação

O Windows Vista e o Windows 7 não são diretamente compatíveis com arquivos .hlp, mas é possível baixar o Programa da Ajuda do Windows (WinHlp32.exe) para Windows Vista ou o Programa da Ajuda do Windows (WinHlp32.exe) para Windows 7 da Microsoft para permitir que esses arquivos sejam abertos.

Os DLLs chamam equivalentes da API de C dessas fun��es e comandos usando as fun��es de retorno de chamada Excel4, Excel4v, Excel12 e Excel12v (sendo que as duas �ltimas fun��es foram introduzidas no Excel 2007). As constantes enumeradas que correspondem a cada fun��o e comando s�o definidas em um arquivo de cabe�alho e passadas como um dos argumentos desses retornos de chamada. Por exemplo, GET.CELL � representado por xlfGetCell, REGISTER pelo xlfRegister e DEFINE.NAME pelo xlcDefineName.

Al�m de fornecer as fun��es de planilha e as fun��es e comandos de folhas de macro, a API de C fornece enumera��es de fun��o e de comando que s� podem ser chamadas usando esses retornos de chamada de dentro de um DLL. Por exemplo, o xlGetName habilita o DLL a descobrir seu pr�prio nome de arquivo e caminho completo, necess�rios quando voc� registra comandos e fun��es com o Excel.

Desde a introdu��o das folhas do Visual Basic for Applications (VBA) no Excel vers�o 5 e do Editor do Visual Basic (VBE) na vers�o 8 (Excel 97), a maneira mais f�cil para os usu�rios personalizarem o Excel � usar o VBA em vez de o XLM. Consequentemente, muitas das novas funcionalidades apresentadas em vers�es posteriores do Excel est�o dispon�veis no VBA, mas n�o no XLM ou na API de C. Por exemplo, v�rios comandos, intercepta��es de eventos e recursos aprimorados de caixa de di�logo s�o disponibilizadas no VBA, mas n�o no XLM ou na API de C.

Para saber mais, confira What's New in the C API for Excel.

Confira também

Novidades na API de C do Excel

Retorno de chamada da API de C: funções Excel4, Excel12

Introdução ao Excel XLL SDK