SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: sirespi en Lunes 29 de Agosto de 2005, 16:08
-
Muy buenas. Acabo de ponerme con las macros de Excel, ya que necisito ejecutar una desde VB cuando desde VB tambien abro un fichero xls. HE mirado por el foro y he hecho lo que dice la gente, es decir, grabar la macro y luego ver el codigo, asi es mas facil. Sin embargo me da error. Os comento lo que hago:
Public e As Object
Private Sub Command1_Click()
Set e = CreateObject("Excel.Application")
e.Visible = True
e.Workbooks.Open FileName:="D:\prueba2.xls"
Macro2
Sub Macro2()
e.Range("A2:B3").Select
e.Charts.Add
e.ActiveChart.ChartType = xlXYScatterLinesNoMarkers
e.ActiveChart.SetSourceData Source:=Sheets("Hoja1").Range("A2:B3"), PlotBy:= _
xlRows
e.ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja1"
With e.ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub
Como veis lo unico que hago es crear un objeto excel , abrir un fichero que ya tiene unos datos y aplicar la macro que he realizado para dibujar una grafica con esos datos
Sin embargo me da error de procedimiento no conocido y me marca la palabra Sheets. Alguno me puede echar un manilla???
Muchas gracias de antemano
-
:comp: Generé una aplicación en la cual modifiqué el código que muestras en tu post.
El codigo abre un archivo excel (icluido) y al presionar el boton generar automaticamente crea diferentes versiones de gráficos de los datos en la hoja 1.
Las linea de comando que estan en verde (originales de tu código), están anuladas porque me tiran diferentes errores, no logré saber porqué.
:suerte:
-
Muchas gracias por la respuesta.
Ya logre saber cual era el fallo. Ahora puedo crear desde VB cualquier hoja de excel sin necesidad de irme al propio excel. Me costo un poco pero una vez cogido el truco, es muy facil.
Te pongo el codigo bueno por si te interesa
Sub Macro2()
e.Range("A2:B3").Select
e.Charts.Add
e.ActiveChart.ChartType = 75
e.ActiveChart.SetSourceData Source:=e.Sheets("Hoja1").Range("A2:B3"), PlotBy:= _
xlRows
e.ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja1"
With e.ActiveChart
.HasTitle = False
.Axes(1, 1).HasTitle = False
.Axes(1, !).HasTitle = False
End With
End Sub
Lo que fallaba era que la propiedad Sheetes no lo reconocia porque no le habia asignado mi objeto excel, e.
Adema luego me dio unos errores cuando hay parametros qeu pone "xlLoQueSea". Me mire un moton de cosas en el codigo de VBA de Excel y descubri que eran constantes, asi que lo que hice fue cambiar esas variables por sus valores numericos y todo funcionando.
Ademas ya pueod hacer cualquier cosa, intercambiar hoojas, copy-paste, graficas, formulas colores, etc etc.
Impresionante la potencia que tiene VB, cada dia me asombro mas.
Muchas gracias por tu respuesta
-
:comp: Gracias por la información de vuelta.
Es importante que todos los usuarios del foro que sea, tengamos esta costumbre, pues la retroalimentación de un tema, solidifica los conocimientos de todos.
Sigamos este ejemplo. :blink: