Excel - Macro de gráficos. Ayuda

 
Vista:
sin imagen de perfil

Macro de gráficos. Ayuda

Publicado por AMGM (6 intervenciones) el 03/03/2015 21:48:13
Hola muy buenas.
No se trabajar mucho en excel, pero necesito hacer unos gráficos (cientos).

Tengo un archivo de excel (realizado a partir de importar datos desde un archivo .ASC) , del cual necesito graficar en cada hoja su "gráfica lineal correpondiente" , pues normalmente en cada archivo tengo unas 5 hojas , y la verdad es bastante tedioso seleccionar los datos de cada hoja y hacerle su gráfica correspondiente en esta misma hoja.

por eso me preguntaba si existe y me podeis ayudar alguna forma de insertar este gráfico de manera predeterminada,
(adjunto archivo para que os hagáis una idea de lo que quiero hacer).

* también me pregunto si existe alguna manera de hacer cada hoja de cálculo de alguna manera automatica, es decir crear algun macro en el que directamente me coja los archivo .asc .

* y por otra parte, ¿es posible superponer las 5 gráficas con diferentes colores para tener una idea de la igualdad de los datos?


Muchísimas 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

Macro de gráficos. Ayuda

Publicado por gonzalo (13 intervenciones) el 03/03/2015 22:27:47
no pude ver el archivo, mis disculpas

lo que tendiras que hacer es usar un

x=dir("path\con\*.asc")
do while x<>""
'aqui agregas el codigo para leer los datos y ponerlos en la hoja de excel

y que termines de leer los datos entonces debes seleccionar el area donde estan los datos y pedir el grafico.


ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$B$4")
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.ChartArea.Select

' esta rutina me ha funcionado bien, solo tienes que modificar el rango a1:b4 por el rango que le corresponde y listo.
x=dir

loop
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
sin imagen de perfil

Macro de gráficos. Ayuda

Publicado por AMGM (6 intervenciones) el 03/03/2015 22:51:14
gracias!
yo soy muy torpe con esto. pero iré investigando por esa línea!
un saludo.
Y muchas gracias de nuevo.
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
sin imagen de perfil

Macro de gráficos. Ayuda

Publicado por gonzalo (13 intervenciones) el 03/03/2015 23:34:59
la estructura del archivo es siempre la misma?

es un archivo de excel por archivo asc?

o una hoja de excel por archivo asc?
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
sin imagen de perfil

Macro de gráficos. Ayuda

Publicado por AMGM (6 intervenciones) el 03/03/2015 23:58:45
Hola,
Le adjunto archivo.
Es una hoja de excel por archivo .ASC

Las columnas a graficar serían las mismas (2 y 4 ).
saludos
Gracias
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
sin imagen de perfil

Macro de gráficos. Ayuda

Publicado por gonzalo (13 intervenciones) el 04/03/2015 00:11:13
mis disculpas, no puedo abrir archivos.
solo dime la estructura del archivo asc.
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
sin imagen de perfil

Macro de gráficos. Ayuda

Publicado por AMGM (6 intervenciones) el 04/03/2015 00:26:15
Gracias por su tiempo.


el archivo .asc viene así (4 columnas de datos con decimales)

0,025000 274,000519 0,000000 0,000000
0,070833 274,277954 0,000000 0,000000
0,116667 273,917358 0,000000 0,000000
0,162500 273,945068 0,000000 0,000000
0,208333 273,750977 0,000000 0,000000
0,254167 274,028259 0,000000 0,000000
0,300000 274,444733 0,000000 0,000000
0,345833 274,971985 0,000000 0,000000
0,391667 274,916534 0,000000 0,000000
0,437500 274,278076 0,000000 0,000000
0,483333 274,111450 0,000000 0,000000
0,529167 274,139191 0,000000 0,000000
0,575000 274,500122 0,000000 0,000000
0,620833 274,139465 0,000000 0,000000
0,666667 273,778687 0,000000 0,000000

Yo quisiera poner que la primera columna se llame : Time
segunda : Potential (mV)
tercer: -
cuarta : Current (mA/ cm2)

y luego graficar en cada hoja su correspondiente gráfico.
y si fuese posible en una hoja adicional superponer los graficos para compararlos.
Gracias

GRAFICA
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
sin imagen de perfil

Macro de gráficos. Ayuda

Publicado por gonzalo (13 intervenciones) el 04/03/2015 00:35:23
ok, mira, vas a necesitar un archivo de excel en blanco, ve a develorper y en macros pide crear una macro nueva que se llame Graficos o como quieras llamarla, en mi caso se va a llamar graficos.

tengo poco espacio para escribir asiq ue voy a pasar el codigo en partes.

sub Grafico()
MyDir="/el/sub/directorio/"
archivo=dir(MyDir & "*.asc)
do whle archivo<>""

procesar mydir,archivo

archivo=dir
loop
end sub

el sub Procesar se va a encargar de hacer todo el trabajo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Macro de gráficos. Ayuda

Publicado por gonzalo (13 intervenciones) el 04/03/2015 00:49:40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
private sub Procesar(Directorio,Archivo)
 Workbooks.Add ' creamos un excel en blanco
 
range("A1").value ="Time"
range("b1").value ="Potential"
range("c1").value ="-"
range("d1").value ="Current " ' encabezado
 
Myrow=2
r=open directorio & archivo for input as #1
do while not eof(1)
line input #1,linea
Myarray=split(linea," ") ' divido el record en campos, 
'posiblemente aqui este mal, tal vez sea myarray() pero no esta definido, 
' si falla usa dim myarray(6) as string
'aparte no se si son espacios o tabs los que dividenlos campos, investigalo
 
range("a" & Myrow).value =myarray(0)
range("b" & Myrow).value =myarray(1)
range("c" & Myrow).value =myarray(2)
range("d" & Myrow).value =myarray(3) ' paso los valores a la hoja de excel
 
myrow=myrow+1 ' me paso al siguiente renglon
loop
close #1 ' no olvides cerrar el archivo
 
'bien, hasta aqui se cargaron los datos a la hoja de excel, sigue el grafico
' para nuestra fortuna Myrow tiene el la ultima linea de excel que se uso
 
 
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$d$" & myrow) ' tadaaaa
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.ChartArea.Select
 
ActiveWorkbook.SaveAs Filename:=directorio & archivo & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
' se guarda el archivo con el mismo nombre pero le agregamos .xlsx al final del nombre
 
activeworkbook.close
 
' y eso es todo.
 
end sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Macro de gráficos. Ayuda

Publicado por AMGM (6 intervenciones) el 04/03/2015 01:14:03
Hola muchas Gracias!!
pues me sale un error en la compilación (Soy muy toroe incluso copiando :), y es la primera vez que abro una ventana macro )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Sub Graficos()
mydir = "/el/sub/directorio/"
Archivo = Dir("MyDir & " * .Asc)
Do While Archivo <> ""
End Sub
Procesar mydir, Archivo
 
Archivo = Dir
Loop
End Sub
Private Sub Procesar(Directorio, Archivo)
Workbooks.Add ' creamos un excel en blanco
 
Range("A1").Value = "Time"
Range("b1").Value = "Potential"
Range("c1").Value = "-"
Range("d1").Value = "Current " ' encabezado
 
myrow = 2
r = "open directorio & archivo for input as #1"
Do While Not EOF(1)
Line Input #1, linea
myarray = Split(linea, " ") ' divido el record en campos,
'posiblemente aqui este mal, tal vez sea myarray() pero no esta definido,
' si falla usa dim myarray(6) as string
'aparte no se si son espacios o tabs los que dividenlos campos, investigalo
 
Range("a" & myrow).Value = myarray(0)
Range("a" & myrow).Value = myarray(1)
Range("a" & myrow).Value = myarray(2)
Range("a" & myrow).Value = myarray(3) ' paso los valores a la hoja de excel
 
myrow = myrow + 1 ' me paso al siguiente renglon
Loop
Close #1 ' no olvides cerrar el archivo
 
'bien, hasta aqui se cargaron los datos a la hoja de excel, sigue el grafico
' para nuestra fortuna Myrow tiene el la ultima linea de excel que se uso
 
 
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$d$" & myrow) ' tadaaaa
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.ChartArea.Select
 
ActiveWorkbook.SaveAs Filename:=Directorio & Archivo & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
' se guarda el archivo con el mismo nombre pero le agregamos .xlsx al final del nombre
 
ActiveWorkbook.Close
 
' y eso es todo.
 
End Sub


macro1
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
sin imagen de perfil

Macro de gráficos. Ayuda

Publicado por gonzalo (13 intervenciones) el 04/03/2015 16:41:47
asc es una funcion de excell.

ahi el problema son las comillas, olvide cerrar las comillas en el ejemplo, cambia esa orden de

Archivo = Dir("MyDir & " * .Asc)

a

Archivo = Dir(MyDir & "*.Asc")
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