Fórum
Ver pergunta

Error al guardar el VBA de Primavera   

35 visualizações
Categoria::
1
0

Hola.

Tengo un problema un problema con el VBA de primavera 9:

Me encuentro con el problema de que una dll que tiene referencias de las interop de Primavera y los Devexpress compilada y funcionando en mi sistema, en cuanto me la llevo al cliente no me deja grabar el vba. Los pasos que hago son:

  1. En mi sistema diseño la dll.
  2. Incluyo la dll en las referencias de primavera para poder llamarla desde el vba
  3. Desarrollo código vba para instanciar las variables de la dll. Hasta aquí … sin problema.
  4. Ahora … me llevo la dll al cliente y la copio y la registro con regasm.exe con la opcion /codebase
  5. Exporto – importo el modulo vba en el cliente.
  6. Voy a referencias busco la tlb y la incluyo.
  7. Compilo y me compila sin fallos.
  8. Ejecuto alguna de las funciones y metodos y si problema. Todo funciona bien.
  9. Voy a grabar el vba y me da el fallo que se ve en la imagen.
Faça login para poder traduzir
V10
Geral
Marcado como spam
Criado há 5 anos e 10 meses apenalva
a
apenalva Iniciante
Comentários

Olá Agustin se não incluir essa Dll também dá esse erro?

5 anos e 10 meses
sergiosereno
    2 respostas
    2
    Resposta privada

    Olá Agustin,

    Uma das coisas que podes fazer e resolve o problema é retirares as referências no VBA e instanciares a DLL por CreateObject. Desta forma não vais ter problemas ao gravar.

    Por exemplo, eu criei esta DLL em C# com referência aos motores do ERP (anexo V9Extensibility.jpg):

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace V9Extensibility1
    {
        public class Class1
        {
            Interop.ErpBS900.ErpBS _motor;
    
            public void Inicializa(Interop.ErpBS900.ErpBS motor)
            {
                _motor = motor;
            }
    
            public void SayHelloWorld()
            {
                System.Windows.Forms.MessageBox.Show("Hello World");
            }
        }
    }
    

    No VBA, quando estou em debug, coloco a referência da DLL e uso normalmente. Quando transporto a DLL para o cliente para a colocar m produtivo, no VBA retiro a referência e troco a instanciação por CreateObject.

    Private Sub SayHelloWorld()
    'Debugging
    'Dim obj As V9Extensibility1.Class1
    
    'Produtivo
    Dim obj As Object
    
        On Error GoTo erro
        
        'Debugging
        'Set obj = New V9Extensibility1.Class1
        
        'Produtivo
        Set obj = CreateObject("V9Extensibility1.Class1")
        
        obj.Inicializa BSO
        obj.SayHelloWorld
            
    erro:
        If Len(Err.Description) > 0 Then
            MsgBox Err.Description
        End If
        
        Set obj = Nothing
        
    End Sub
    

     

    Faça login para poder traduzir
    Marcado como spam
    Criado há 5 anos e 10 meses
    Iniciante
      0
      Resposta privada

      No. Si guardo el VBA sin referenciar la dll el VBA se guarda correctamente

      Faça login para poder traduzir
      Marcado como spam
      Criado há 5 anos e 10 meses apenalva
      a
      apenalva Iniciante