AutoCad - VBA: Uso con Excel

 
Vista:
Imágen de perfil de Nicolás
Val: 42
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

VBA: Uso con Excel

Publicado por Nicolás (33 intervenciones) el 17/08/2019 02:33:52
Buenos días, tardes o noches programadores! Tengo el siguiente código simple de VBA que lo único que hace es decir la cantidad de archivos de Excel abiertos y cuales son, el cual funciona correctamente en VBA de Excel...

El problema es cuando quiero ejecutarlo desde VBA de Autocad, ya incluí la librería de Excel, y compila, pero no reconoce los archivos abiertos, es decir, me aparecen 0.

1
2
3
4
5
6
7
8
9
10
11
12
Sub LibrosAbiertos()
 
    Dim count As Integer
 
    count = Excel.Workbooks.count
    MsgBox ("Hay " & count & " archivo/s abierto/s")
 
    For i = 1 To count
        MsgBox (Excel.Workbooks(i).FullName)
    Next
 
End Sub


No se que es lo que me estaría faltando o si debería usar otros comandos, espero sus respuestas.
Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.285
Oro
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

VBA: Uso con Excel

Publicado por Gerardo (986 intervenciones) el 20/08/2019 04:38:12
Hola

Te falta definir el objeto Excel que invocas en la línea 5

Ese codigo puede funcionar en Excel porque el es dueño de su propio objeto, pero el AutoCad no sabe lo que es Excel.

En autolisp lo hacemos así:
1
2
(setq Excel (vlax-get-or-create-object "Excel.Application"))
(setq Libros (vlax-get-property Excel 'WorkBooks))

el codigo es diferente pero la lógica es la misma

Mira la página 4 de este documento:
https://www.augi.com/uploads/autodesk_university/2005/CP22-3.pdf
ahi tambien hay un "getobject". No sé si es la única forma de hacerlo, ese lenguaje quedó obsoleto hace un rato (que no quiere decir que no sea util si es lo que sabes y te resuelve un problema). Supongo que si programas una rutina en VisualBasic .Net te pediria el mismo protocolo: definir un objeto para contener la aplicacion excel, obtener la aplicacion en el objeto y utilizar los metodos del objeto para obtener sus propiedades, como por ejemplo la coleccion de libros

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar