TODOPIC
Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: Evonkc en 18 de Julio de 2013, 21:53:52
-
Saludos a todos..
Tengo un pequeño problema, Deseo Realizar con Vb una rutina que me permita hacer que cualquier Libro de Excel que contenga datos con indeterminadas Filas y Columnas, los importe a gráficos en una Sheets distinta.
Para ello he estado trabajando con el resultado de ya poder seleccionar el archivo por medio de Commondialog, sin embargo a continuación he copiado y pegado la linea de código de una macro de Excel en donde agregando una nueva hoja, seleccionando los datos y diseñando los gráficos; sin embargo este me arroja un error :huh:
Que me pueden aconsejar para poder solucionar esto, tambien dejo la programación.
Gracias :mrgreen:
Private Sub Command1_Click()
With CommonDialog1
'para abrir el archivo Excel
.Filter = "archivo XLS|*.XLS|Todos los archivos|*.*"
.DialogTitle = " Seleccionar el archivo XLS"
.ShowOpen
XLS = .FileName
End With
If XLS = "" Or XLS = "" Then
Exit Sub
Else
Call Diseñar_Graficos
End If
End Sub
Private Sub Diseñar_Graficos()
Sheets.Add After:=Sheets(Sheets.Count)
Range("C3").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveSheet.Shapes("1 Gráfico").IncrementLeft -204.75
ActiveSheet.Shapes("1 Gráfico").IncrementTop -60
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Values = "=Hoja1!$C$2:$C$53"
ActiveChart.SeriesCollection(1).XValues = "=Hoja1!$B$2:$B$53"
Range("J3").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveSheet.Shapes("2 Gráfico").IncrementLeft 216
ActiveSheet.Shapes("2 Gráfico").IncrementTop -60
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Values = "=Hoja1!$F$2:$F$53"
ActiveChart.SeriesCollection(1).XValues = "=Hoja1!$B$2:$B$53"
End Sub
-
Realmente no he trabajado con esto pero creo que seria mas facil ademas de versatil si lo haces en una versión de VB mas reciente estan las express que son gratuitas ademas que ya los equipos nuevos no corren el VB 6, solo como comentario. Saludos
-
¿Cuál es el error?
-
Saludos,
nocturno:
Error 1004 en tiempo de ejecución,
la descripción de esta dice: Error en el método 'Sheets' del objetivo '_Global'
Gab163, Gracias por la recomendacion ;-)
-
Adjunta la hoja Excel para que pueda descargarla y echarle un vistazo a ver si puedo ayudarte.
-
Adjuntado Nocturno
Se agradece la asistencia. Saludos ((:-))
-
Tienes 4 macros, de las cuales me han funcionado 3 sin dar errores.
El único error está en la macro "graficos4", en la ínea
ActiveSheet.Shapes("4 Gráfico").IncrementLeft
en la que únicamente falta el parámetro de cuánto quieres incrementar. Por ejemplo, poniendo esto
ActiveSheet.Shapes("4 Gráfico").IncrementLeft 10
funciona perfectamente.
-
Saludos,
Estuve un poco fuera de Internet por un tiempo, Sin Embargo gracias por la asistencia Nocturno.
Ahora Vamos al grano como dice el dermatologo, realice el cambio que me has recomendado Pero tengo que comentar que sigo sin cumplir el objetivo Con otras Hojas excel e inclusive la 4 no la realiza..
:shock:
-
¿Qué versión del Excel estás usando?
-
Utilizo la 2010, para visual basic utilizo Microsoft excel 14.0 Object Library como librería y utilizo microsoft Common Dialog Control 6.0 Sp6 como componentes..
-
Pues no me quedan argumentos entonces, estoy usando lo mismo que tú.
-
bueno esto es sin decepcionarse, hay que seguir intentando hasta encontrar el pero y solucionarlo, Gracias por tu ayuda se valora... Si encuentro la manera lo publicare :-/
-
saludos,
les comento seguí investigando y realizando tareas para dar con lo deseado, no llego aun a puerto final pero creo que voy en al dirección correcta, hasta el momento soy capaz de abrir cualquier archivo Excel; agregar una nueva hoja al libro con su respectivo nombre y puedo agregar gráficos, sin embargo estoy en esto ultimo solo agregar un gráfico y solo sale el recuadro en blanco sin datos, pues me falta enlazar los datos de interés y graficarlos en uno de linea.
Dejo aquí lo que he realizado hasta el momento para aquellos que puedan ver alguna utilidad en ello. Ademas dejo adjunto un archivo excel con datos para que puedan ver lo que sucede.
Saludos a todos.
Private Sub Command1_Click()
On Error Resume Next
Dim oExcel As Object 'excel aplicacion
Dim oBook As Object 'woorkbook aplicacion
Dim oSheet As Object 'excel worksheets aplicacion
Dim ochart As Object 'excel shart
Dim ubicacion As String
With CommonDialog1
.CancelError = True
'Para Abrir el xls
.Filter = "Archivo xls|*.xls|Todos los archivos|*.*"
.FilterIndex = 2
.ShowOpen
If Err = 0 Then
ubicacion = .FileName
End If
End With
'ubicacion = "C:\Users\Evonkc\Desktop\datos recabados\6.xls"
Call abrir(ubicacion)
End Sub
Private Sub abrir(ubicacion)
'comienza, abre la hoja excel especificada
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Open(ubicacion, , False, , "", "")
' crea una nueva hoja de excel
Set oSheet = oExcel.Sheets.Add
oSheet.Name = "graficos"
'Insertar un grafico en la hoja agregada
Set ochart = oSheet.ChartObjects.Add(50, 40, 300, 200).Chart
Set ochart = oSheet.ChartObjects.Add(450, 40, 300, 200).Chart 'Set ochart = oSheet.ChartObjects.Add(9 * 50, 40, 300, 200).Chart
Set ochart = oSheet.ChartObjects.Add(50, 340, 300, 200).Chart 'el (x,y,tamaño x, tamaño y ) x=desplazamiento hacia la izquierda
Set ochart = oSheet.ChartObjects.Add(450, 340, 300, 200).Chart 'y=desplazamiento hacia arriba grafica ; tamaño x= aumenta tamaño grafico a lo ancho; tamaño y= aumenta tamañao grafico alto
'se hace visible el libro de excel
oExcel.Visible = True
End Sub