Ejecutar una Macro de Excel desde VB.NET

25/09/2008 - 15:50 por Consuelo | Informe spam
Hola,

Tengo un pequeño problema a la hora de ejecutar Excel 2003 desde un programa
VB.NET 2005, concretamente el problema se produce al llamar a una macro que
está en un complemento de Excel (AddIn) hecho por mi, pues no soy capaz de
que el programa VB.NET encuentre dicha macro.

Lo que hago es exactamente esto :

Private Sub BTCompras_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BTCompras.Click
Dim Excl As New Microsoft.Office.Interop.Excel.Application
Try
If Excl.AddIns("SolCompra").Installed = False Then
MsgBox("No está instalada la solicitud de Compra")
BTCompras.Enabled = False
Excl.Quit()
Exit Sub
End If
Excl.Visible = True
Excl.Run(Excl.AddIns("SolCompra").FullName + "!Haz_Solicitud")

Catch ex As Exception
MsgBox(ex.Message)
Try
Excl.Quit()
End If
Catch
End Try
End Try
End Sub

He hecho varias pruebas al poner el nombre de la macro:
- Si pongo solo el nombre de la macro: Excl.Run( "Haz_Solicitud") dice: No
se puede encontrar la macro "Haz_Solicitud".

- Si pongo también el nombre del fichero XLA que contiene la macro :
Excl.Run( "SolCompra.xla!Haz_Solicitud") dice: No se puede hallar
"SolCompra.xla".

- Si pongo el path completo del fichero XLA :
Excl.Run(Excl.AddIns("SolCompra").FullName + "!Haz_Solicitud") dice: No se
puede encontrar la macro "C:\Archivos de programa\Microsoft
Office\OFFICE11\MACROS\SolCompra.xla!Haz_Solicitud".

Evidentemente la macro existe y se llama así, pues si desde un modulo VBA de
Excel hago las mismas llamadas, estas se ejecutan correctamente en el primer
y segundo caso, fallando de la misma manera en el tercero (Run
(AddIns("SolCompra").FullName + "!Haz_Solicitud")).

¿Puede alguien ayudarme a encontrar una solución a este problema?

Muchas gracias

Consuelo

Preguntas similare

Leer las respuestas

#6 Ivan
02/10/2008 - 16:33 | Informe spam
y hola de nuevo,

solo un comentario que se me acaba de escapar en el mensaje anterior:

[aunque ya no lo has utilizado] si no me equivoco a la hora de
concatenar cadenas (como aqui hacias :
Excl.Run(Excl.AddIns("SolCompra").FullName + "!Haz_Solicitud") )

creo que resulta mas conveniente, al menos en VB, el uso del signo de
concatenacion '&' [ampersand, o algo asi :-))] que el de la suma

bueno, solo por que lo iba a meter en el otro mensaje y se me escapo

un saludo
Ivan
Respuesta Responder a este mensaje
#7 Consuelo
02/10/2008 - 18:28 | Informe spam
Sí, es verdad que es más eficiente utilizar & para concatenar cadenas, pues
el operador + está más sobrecargado y requiere que el compilador realice más
comprobaciones, pero yo suelo utilizar el + por costumbre, y no he querido
cambiar de costumbre pues una ventaja de utilizar el + es que en caso de que
me equivoque en el nombre de alguna de las variable a concatenar, por
ejemplo usar una variable numérica en lugar de una de texto, el & realiza
una conversión implícita y no salta el error, en cambio con el + se produce
un error de tipo incorrecto y me doy cuenta de inmediato de mi
equivocación pero en el fondo tampoco hay tanta diferencia en usar uno u
otro.

+ Gracias y saludos

Consuelo


"Ivan" escribió en el mensaje
news:
y hola de nuevo,

solo un comentario que se me acaba de escapar en el mensaje anterior:

[aunque ya no lo has utilizado] si no me equivoco a la hora de
concatenar cadenas (como aqui hacias :
Excl.Run(Excl.AddIns("SolCompra").FullName + "!Haz_Solicitud") )

creo que resulta mas conveniente, al menos en VB, el uso del signo de
concatenacion '&' [ampersand, o algo asi :-))] que el de la suma

bueno, solo por que lo iba a meter en el otro mensaje y se me escapo

un saludo
Ivan
Respuesta Responder a este mensaje
#8 Ivan
02/10/2008 - 19:02 | Informe spam
hola Consuelo

Sí, es verdad que es más eficiente utilizar & para concatenar cadenas, pues
el operador + está más sobrecargado y requiere que el compilador realice más
comprobaciones, pero yo suelo utilizar el + por costumbre, y no he querido
cambiar de costumbre pues una ventaja de utilizar el + es que en caso de que
me equivoque en el nombre de alguna de las variable a concatenar, por
ejemplo usar una variable numérica en lugar de una de texto, el & realiza
una conversión implícita y no salta el error, en cambio con el + se produce
un error de tipo incorrecto y me doy cuenta de inmediato de mi
equivocación pero en el fondo tampoco hay tanta diferencia en usar uno u
otro.




gracias por la explicacion y detalles que no conocia sobre el tema.

un saludo
Ivan
Respuesta Responder a este mensaje
#9 Miguel
27/10/2008 - 20:53 | Informe spam
Hola, no se si a ud. le ha salido una situacion que desee desde visual basic,
abrir una hoja de excel pero que solo lo ocupe para imprimir el contenido que
previamente se le asigno a la hoja, lo que deseo es que usuario no pueda
modificar los datos de la hoja y solo le permita imprimir lo que contien la
hoja.

Les agradeceria sus comentarios.

"Consuelo" wrote:

Hola,

Tengo un pequeño problema a la hora de ejecutar Excel 2003 desde un programa
VB.NET 2005, concretamente el problema se produce al llamar a una macro que
está en un complemento de Excel (AddIn) hecho por mi, pues no soy capaz de
que el programa VB.NET encuentre dicha macro.

Lo que hago es exactamente esto :

Private Sub BTCompras_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BTCompras.Click
Dim Excl As New Microsoft.Office.Interop.Excel.Application
Try
If Excl.AddIns("SolCompra").Installed = False Then
MsgBox("No está instalada la solicitud de Compra")
BTCompras.Enabled = False
Excl.Quit()
Exit Sub
End If
Excl.Visible = True
Excl.Run(Excl.AddIns("SolCompra").FullName + "!Haz_Solicitud")

Catch ex As Exception
MsgBox(ex.Message)
Try
Excl.Quit()
End If
Catch
End Try
End Try
End Sub

He hecho varias pruebas al poner el nombre de la macro:
- Si pongo solo el nombre de la macro: Excl.Run( "Haz_Solicitud") dice: No
se puede encontrar la macro "Haz_Solicitud".

- Si pongo también el nombre del fichero XLA que contiene la macro :
Excl.Run( "SolCompra.xla!Haz_Solicitud") dice: No se puede hallar
"SolCompra.xla".

- Si pongo el path completo del fichero XLA :
Excl.Run(Excl.AddIns("SolCompra").FullName + "!Haz_Solicitud") dice: No se
puede encontrar la macro "C:\Archivos de programa\Microsoft
Office\OFFICE11\MACROS\SolCompra.xla!Haz_Solicitud".

Evidentemente la macro existe y se llama así, pues si desde un modulo VBA de
Excel hago las mismas llamadas, estas se ejecutan correctamente en el primer
y segundo caso, fallando de la misma manera en el tercero (Run
(AddIns("SolCompra").FullName + "!Haz_Solicitud")).

¿Puede alguien ayudarme a encontrar una solución a este problema?

Muchas gracias

Consuelo







email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida