Excel vbs

14/09/2008 - 19:04 por I301199 | Informe spam
Buenas, me gustaría que alguien me echase una mano para realizar los
siguiente con un script vbs:
abrir csv con excel , realizar una serie de cambios en los formatos de
ciertas columnas y después generar un gráfico a partir de dos columnas.

He creado una plantilla que incluye una macro para hacer todo lo relativo al
cambio de formato en las columnas y la generación del gráfico, pero no sé
como hacer para abrir la xlt (plantilla) y luego pegarle el contenido del csv
y después aplicar la macro...

No sé, seguro que hay una manera más fácil de hacerlo..

Alguien me puede echar una mano??
Muchas gracias!!
Saludos
I301199

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
15/09/2008 - 04:19 | Informe spam
hola, 'anonimo/a' !

... una mano para realizar los siguiente con un script vbs: abrir csv con excel
realizar una serie de cambios en los formatos de ciertas columnas
y despues generar un grafico a partir de dos columnas.

He creado una plantilla que incluye una macro para hacer todo
lo relativo al cambio de formato en las columnas y la generacion del grafico,
pero no se como hacer para abrir la xlt (plantilla) y luego pegarle el contenido del csv y despues aplicar la macro...



1) para crear un dcumento nuevo basado en alguna (pre/determinada) plantilla (*.XLT) usa el metodo .Add (p.e.)
workbooks.add "ruta:\y sub\carpetas\donde esta\tu plantilla.XLT"
no olvides que el nuevo libro queda como el "libro activo" (al igual que cuando se abre cualquier documento)

2) para "pegar" el contenido de un *.CSV pudiera haber diversas alternativas...

a) abrir el *.csv, copiar los datos "correspondientes" y pegarlos "donde corresponda" en el libro "apropiado"
op1: workbooks.open "c:uta y sub\carpetas\donde esta\tu archivo.CSV"
op2: workbooks.opentext "c:uta y sub\carpetas\donde esta\tu archivo.CSV" ' <= esta variante tiene mas opciones
-> consulta la ayuda en linea {F1} por las diferentes alternativas para abrir archivos de texto

b) usar ADO para "leer" los datos en el *.CSV y pegarlos en algun libro (abierto) con un objeto RecordSet

de seguro hay mas opciones (si comentas algo mas concreto como para poder (re)construir el modelo a resolver)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 I301199
16/09/2008 - 23:41 | Informe spam
Muchas gracias!! Ya pude!
Ahora tengo otra duda:
El código vb que se genera automaticamente cuando grabas una macro desde
excel se puede invocar directamente desde un .vbs??

Lo pregunto porque al invocar este sub dentro de mi vbs me da un error en la
linea 6: "Error de compilación de Microsoft VBScript: Se esperaba una
instrucción"
Sin embargo, si ejecuto la macro desde la propia excel todo va OK.

Muchas gracias de antemano.

Saludos!
Sub Macro1()
'1' nombre_de_la_hoja = ActiveSheet.Name
'2' Range("B1:B6,D1:D6").Select
'3' Range("D1").Activate
'4' Charts.Add
'5' ActiveChart.ChartType = xlColumnClustered
'6' ActiveChart.SetSourceData
Source:=Sheets(nombre_de_la_hoja).Range("A:A,D:D"), PlotBy:=xlColumns
'7' ActiveChart.Location Where:=xlLocationAsObject, Name:=nombre_de_la_hoja
End Sub

"Héctor Miguel" wrote:

hola, 'anonimo/a' !

> ... una mano para realizar los siguiente con un script vbs: abrir csv con excel
> realizar una serie de cambios en los formatos de ciertas columnas
> y despues generar un grafico a partir de dos columnas.
>
> He creado una plantilla que incluye una macro para hacer todo
> lo relativo al cambio de formato en las columnas y la generacion del grafico,
> pero no se como hacer para abrir la xlt (plantilla) y luego pegarle el contenido del csv y despues aplicar la macro...

1) para crear un dcumento nuevo basado en alguna (pre/determinada) plantilla (*.XLT) usa el metodo .Add (p.e.)
workbooks.add "ruta:\y sub\carpetas\donde esta\tu plantilla.XLT"
no olvides que el nuevo libro queda como el "libro activo" (al igual que cuando se abre cualquier documento)

2) para "pegar" el contenido de un *.CSV pudiera haber diversas alternativas...

a) abrir el *.csv, copiar los datos "correspondientes" y pegarlos "donde corresponda" en el libro "apropiado"
op1: workbooks.open "c:uta y sub\carpetas\donde esta\tu archivo.CSV"
op2: workbooks.opentext "c:uta y sub\carpetas\donde esta\tu archivo.CSV" ' <= esta variante tiene mas opciones
-> consulta la ayuda en linea {F1} por las diferentes alternativas para abrir archivos de texto

b) usar ADO para "leer" los datos en el *.CSV y pegarlos en algun libro (abierto) con un objeto RecordSet

de seguro hay mas opciones (si comentas algo mas concreto como para poder (re)construir el modelo a resolver)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.



Respuesta Responder a este mensaje
#3 Héctor Miguel
17/09/2008 - 00:01 | Informe spam
hola, (...) ???

... otra duda:
El codigo vb que se genera automaticamente cuando grabas una macro desde excel
se puede invocar directamente desde un .vbs??
Lo pregunto porque al invocar este sub dentro de mi vbs me da un error en la linea 6:
"Error de compilacion de Microsoft VBScript: Se esperaba una instruccion"
Sin embargo, si ejecuto la macro desde la propia excel todo va OK...



considera que una macro "de excel" ejecutada "desde el mismo excel"
utiliza de manera transparente las llamadas a sus objetos, metodos, propiedades, etc. etc. etc.

ejecutar codigo "de excel", FUERA de su entorno, (seguramente) dependera de...
- como establezcas el vinculo entre tu archivo de texto (*.vbs) y alguna instancia de excel -?-
- como hagas un llamado a los procedimientos generados por la grabadora de macros en excel -?-

saludos,
hector.

__ codigo expuesto __
Sub Macro1()
'1' nombre_de_la_hoja = ActiveSheet.Name
'2' Range("B1:B6,D1:D6").Select
'3' Range("D1").Activate
'4' Charts.Add
'5' ActiveChart.ChartType = xlColumnClustered
'6' ActiveChart.SetSourceData Source:=Sheets(nombre_de_la_hoja).Range("A:A,D:D"), PlotBy:=xlColumns
'7' ActiveChart.Location Where:=xlLocationAsObject, Name:=nombre_de_la_hoja
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida