Saltar al contenido

Abrir un formulario de un Addin desde un archivo xlsm


Recommended Posts

publicado

Hola a todos y todas;

Estoy intentando ajustar un procedimiento para que desde mi macro "MiPrueba" y desde el botón "btnAbrirFormAddin" de  mi formulario "Form1" abrir el formulario  "Formulario1" que esta en mi complemento "NombreDelComplemento".

Private Sub btnAbrirFormAddin_Click()
    ' Verificar si está instalado el complemento
    If AddIns("NombreDelComplemento").Installed = True Then
        ' Llama al formulario del complemento
        Application.Run "NombreDelComplemento.xlam!Formulario1.Show" '<--No carga, me da error 1004
    Else
        MsgBox "El complemento no está instalado."
    End If
End Sub

La verificación la he probado y funciona pero este procedimiento no va:

Application.Run "NombreDelComplemento.xlam!Formulario1.Show"

Me da error 1004 y los nombres están bien y las macros estan habilitadas al igual que el proyecto VBA ¿?

Saludos.

publicado
hace 9 minutos , Antoni dijo:

Hasta donde yo se  Application.Run solo sirve para ejecutar macros.

Gracias Antoni, seguiremos investigando a ver si suena la 🔔 y sino resina😃.

Saludos 

publicado

Pon una macro en el complemento que muestre el formulario y luego, si que puedes ejecutar esa macro con Application Run, ejemplo

En el complemento:

Sub Mostrar()
Formulario1.Show
End Sub

En tu formulario:

Private Sub btnAbrirFormAddin_Click()
Application.Run "NombreDelComplemento.xlam!Mostrar"
End sub

 

publicado
hace 21 minutos , Antoni dijo:

Pon una macro en el complemento que muestre el formulario y luego, si que puedes ejecutar esa macro con Application Run, ejemplo

En el complemento:

Sub Mostrar()
Formulario1.Show
End Sub

En tu formulario:

Private Sub btnAbrirFormAddin_Click()
Application.Run "NombreDelComplemento.xlam!Mostrar"
End sub

 

Gracias Antoni, ahora no puedo, tan pronto lo pruebe te cuento.

Saludos 👍

publicado
hace 12 horas, Antoni dijo:

Pon una macro en el complemento que muestre el formulario y luego, si que puedes ejecutar esa macro con Application Run, ejemplo

En el complemento:

Sub Mostrar()
Formulario1.Show
End Sub

En tu formulario:

Private Sub btnAbrirFormAddin_Click()
Application.Run "NombreDelComplemento.xlam!Mostrar"
End sub

 

Buenos días Antoni, perfecto ahora si me deja abrir el formulario.

Inclusive he probado pasando parmetros y parece que funciona bien.

Sigo probando mas cosas.

Saludos e bo día

publicado
hace 19 horas, Antoni dijo:

Pon una macro en el complemento que muestre el formulario y luego, si que puedes ejecutar esa macro con Application Run, ejemplo

En el complemento:

Sub Mostrar()
Formulario1.Show
End Sub

En tu formulario:

Private Sub btnAbrirFormAddin_Click()
Application.Run "NombreDelComplemento.xlam!Mostrar"
End sub

 

Hola Antoni, sigo con este tema y hay algo que no consigo hacer que funciones.

Tengo este procedimiento:

Private Sub btnAbrirFormularioAddin_Click()
    ' Verifica si el complemento está instalado y accesible
    If AddIns("NombreDelComplemento").Installed = True Then
        Dim nombreTextBox As Object
        Set nombreTextBox = Me.TextBox1 ' Especifica el nombre de tu TextBox como un objeto

        ' Llama al formulario del complemento y pasa el formulario y el nombre del cuadro de texto
        Application.Run "NombreDelComplemento.xlam!Mostrar", Me, nombreTextBox

    Else
        MsgBox "El complemento no está instalado."
    End If
End Sub

y desde este otro abro el Formulario1 pasando por parámetro nombre de formulario y de textBox

Sub Mostrar(formulario As Object, nombreTextBox As String)
    nombreTextBox = "TextBox1"
    NombreFormulario = formulario.Name
    Formulario1.Show
End Sub

y  en el procedimiento 

Sub desdeElProcedimiento(formulario As Object, textBox As Object, Optional NombreFormulario As String = "", Optional nombreTextBox As String = "")     
Dim textBox As Object
       If Me.Textbox5 = "Hola" then 
			Set textbox = formulario.Controls(nombreTextBox)	
            formulario.Controls(nombreTextBox).value = vNombre
        End If
End Sub

y decir que vNombre es una variable Pública.

Veo que el nombre de formulario lo pasa bien, pero el del TextBox va vacio, incluso e probado hacer la operación manualmente:

                  NombreDeMiFormulario.NombreDeMiTextBox.Value=VNombre

y no lleva el valor o texto a  mi TextBox1 de mi formulario Formulario1 ¿?

Ya no se me ocurre nada más.

Saludos.

publicado

Tienes un cacao de narices con  la variable nombreTextbxox, la usas como objeto, como string,  sin definir, vamos un caos.

Sube los archivos y lo pruebo.

 

publicado
hace 15 horas, Antoni dijo:

Tienes un cacao de narices con  la variable nombreTextbxox, la usas como objeto, como string,  sin definir, vamos un caos.

Sube los archivos y lo pruebo.

 

Sí ya probé de todas formas, como Objeto, String.

Copie lo que no era.

A ver si puedo subir un trozo del Addin y  la macro y te explico mejor.

Saludos 

publicado
hace 3 horas, Antoni dijo:

Tienes un cacao de narices con  la variable nombreTextbxox, la usas como objeto, como string,  sin definir, vamos un caos.

Sube los archivos y lo pruebo.

 

Hola Antoni, te subo el archivo con el complemento incluido.

Como verás desde el fomulario de la macro abre el formulario del Addin.

Ahora lo que quiero conseguir es retornar uno o varios  valores al formulario de la macro.

Lo he abreviado todo lo que pude para que no haya tanto embrollo.

Saludos.

 

 

MiMacro.xlsm

publicado
'En el Addin, en un módulo

Sub Mostrar(T1 As Control, T2 As Control)
With FormAddin
   .Show
   T1 = .TextBox1
   T2 = .TextBox2
End With
End Sub

'En el formulario FormMacro

Private Sub btnAbrirFormularioAddin_Click()
    ' Verifica si el complemento está instalado y accesible
    If AddIns("MiComplemento").Installed = True Then

        ' Llama al formulario del complemento y pasa el formulario y el nombre del cuadro de texto
        Application.Run "MiComplemento.xlam!Mostrar", TextBox1, TextBox2

    Else
        MsgBox "El complemento no está instalado."
    End If
End Sub

Se supone que los textbox del Addin  y del FormMacro se llaman TextBox1 y TextBox2, pero no tienen porqué serlo.

publicado
hace 14 horas, Antoni dijo:
'En el Addin, en un módulo

Sub Mostrar(T1 As Control, T2 As Control)
With FormAddin
   .Show
   T1 = .TextBox1
   T2 = .TextBox2
End With
End Sub

'En el formulario FormMacro

Private Sub btnAbrirFormularioAddin_Click()
    ' Verifica si el complemento está instalado y accesible
    If AddIns("MiComplemento").Installed = True Then

        ' Llama al formulario del complemento y pasa el formulario y el nombre del cuadro de texto
        Application.Run "MiComplemento.xlam!Mostrar", TextBox1, TextBox2

    Else
        MsgBox "El complemento no está instalado."
    End If
End Sub

Se supone que los textbox del Addin  y del FormMacro se llaman TextBox1 y TextBox2, pero no tienen porqué serlo.

Hola Antoni,  ya he probado el procedimiento y perfecto.

Está genial.

Yo lo había conseguido usando el Clipboard.

Me gusta más así.

Saludos y gracias 👏

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.