Pergunta

Eu estou usando Turbo Delphi 2006.

A DLL será chamado de dentro do Excel como parte de uma combinação VBA / DLL.

A primeira parte do problema é tentar descobrir como passar para a DLL uma referência para a sessão atual do Excel. A maioria outro código que eu vi foi que ele lançou uma instância separada do Excel para além do que você está dentro.

Eu vi algum código C ++ que cria uma instância de IDispatch e, em seguida, passa algo para um método do objeto IDispatch, mas não saber muito C ++.

Todas as idéias?

Foi útil?

Solução

O que você descreve é ??chamado escrevendo um suplemento COM. Você precisa criar uma DLL de automação e implementar o IDTExtensibility2 interface. Você vai então receber a interface Application Excel como um parâmetro para o método OnConnection.

Você também precisará registar a DLL como um suplemento tão Excel irá carregá-lo automaticamente.

EDIT: esqueci de mencionar: Você pode querer dar uma olhada em Add-in Express . Sua estrutura e componentes fazem começar com a criação de suplementos Escritório ridiculuously fácil. Você definitivamente não terá que se preocupar com os detalhes da IDTExtensibility2. Tudo o que vem com um (bem justificado) etiqueta de preço, no entanto.

Outras dicas

Delphi vem com um conjunto de controles ActiveX para dar acesso completo para o Excel e outros aplicativos do Office. Eles devem estar na guia "Servidores" da paleta de ferramentas.

Se o não estão lá, em seguida, selecione Componentes |. Instalar Pacotes, e role para baixo a lista de lá até o fim, e selecione o pacote certo

Em uma instalação padrão, que deve ser chamado:

Sample Microsoft Office Automation Server Wrapper Componentes

e deve haver um para XP e Win2k. Os XP irá trabalhar para Vista.

Agora que se se você quiser automatizar o Excel.

Se você simplesmente deseja adicionar funcionalidade para o Excel usando Delphi, eu sugiro usar um objeto COM, como eu suspeito que o Excel é muito aceitar de objetos COM. Caso contrário, você pode criar uma DLL em linha reta, e o uso que da mesma forma que o Excel usa qualquer outro DLL.

Eu não sei muito sobre o Office, mas eu acho que você deve usar COM / ActiveX. Então você também obter o seu IDispatch. Consulte http://delphi.about.com/od/comoleactivex/OLE_COM_DCOM_Automation_ActiveX_Delphi_knowledge_base.htm

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top