/ / Não é possível executar a função excel a partir do MS Access - excel, vba, excel-vba, acesso ms

Não é possível executar a função excel a partir do MS Access - excel, vba, excel-vba, acesso ms

Estamos migrando um aplicativo do MS Access 2003 do Office 2003 para o Office 2010 (e WinXP => Win7) e enfrentamos um problema ao tentar executar o Função de rendimento do Excel do MS Access. O código atual para fazer isso (que funciona no XP / Office 2003) é assim:

Dim objExcel As Excel.Application
Set objExcel = New Excel.Application
objExcel.RegisterXLL objExcel.Application.LibraryPath & "ANALYSISANALYS32.XLL"
dblYield = objExcel.Run("Yield", dteTDate, rstSec.Fields(2), dblRate / 100, dblPricePaid, rstSec.Fields(7), rstSec.Fields(4), rstSec.Fields(6))

Os erros de código na linha final e dá o seguinte erro:

Erro em tempo de execução "1004": Não é possível executar a macro "Yield". A macro pode não estar disponível nesta pasta de trabalho ou todas as macros podem estar desabilitadas.

Eu tentei algumas coisas, incluindo especificamente adicionando e registrando o pacote de ferramentas de análise usando o seguinte código:

objExcel.RegisterXLL "C:Program Files (x86)Microsoft OfficeOffice14LibraryAnalysisATPVBAEN.XLA"

Mas eu recebo o mesmo erro.

Eu estou pensando no momento que o problema pode ser até talvez a necessidade de criar uma pasta de trabalho habilitado para macro, ou talvez seja alguma configuração de segurança do Win7 / Office 2010 que eu não estou familiarizado.

A única solução potencial que posso encontrar emo momento é criar um assembly COM interop .net que encapsule uma instância do Excel expondo a função Yield. No entanto, eu preferiria uma solução diferente, porque para ir a rota de interoperabilidade COM eu teria que obter direitos de administrador, em seguida, para implantar eu teria que registrar a dll na máquina de usuários finais, além disso eu provavelmente iria se deparar com o mesmo erro em .net como no MS Access.

Finalmente, há um projeto .net para recriar uma série de Funções financeiras do Excel em um assembly F #. Infelizmente, a função Yield não é uma das funções reimplementadas.

Eu aprecio muito qualquer conselho sobre isso,

Felicidades,

Jamie

Respostas:

1 para resposta № 1

Se alguém tiver o mesmo problema, a maneira como resolvi(contornou) foi usar uma pasta de trabalho externa na qual eu tinha a fórmula de rendimento em uma célula, fazendo referência a um grupo de células contendo os parâmetros de rendimento. Em seguida, substituo os parâmetros por meio da minha função Access vba, forço a planilha a recalcular a fórmula e retorná-la ao meu banco de dados do Access.