Más Prehistoria - Macros de Excel

Iniciado por Agarkala, Agosto 19, 2010, 03:51:42 PM

Tema anterior - Siguiente tema

Agarkala

Hola, niños. Como ya hago de todo menos chuparla, para lo cual no sé si quedará mucho o poco, me han encargado una tarea estúpida para hacer en Excel.

Tengo una hoja Excel con varias pestañas; en cada una hay un listado de presupuestos, inversiones, loquefuere. Una de las columnas indica a qué centro corresponde la partida indicada en cada fila.

Se me pide que automáticamente se genere una pestaña nueva por cada centro que se patee las hojas anteriores y escriba las partidas que le toquen. ¿Alguna idea? ¿Algún experto en VBA en la sala?

En fin, 13 años de experiencia y aquí­ estoy, de PBC otra vez.

JM

Te será mas facil hacer un miniprograma en VB6 o .Net, que abra la hoja y la repase a gusto.

Por otro lado, si quieres crear una macro en vba dentro de la misma hoja. Herramientas -> Macros -> Grabar Macro. Haces las operaciones y te genera la macro de lo que vas haciendo. Para terminar HErramientas->macro->Detener grabacion, luego vas a Herramientas->macro->Editas la macro y si quieres cambiarle algo, poner variables, etc. etc.

Pero yo, haria el programa en Vbasic.

In God we trust (sometimes, some pictures: http://www.areopago.eu/index.php?topic=888.msg574445#msg574445 )... (C) Extineo

yonnon

En principio, la forma que te dice JM es la mas facil. Si sabes claramente que el proceso es automatizable, lo "haces a piñon" con la grabadora de macros en marcha. Luego puedes editar el codigo para "arreglar" los nombres de variables, etc, etc y ver que pasa.

Agarkala

No, no puedo.

La cosa es algo así­ como:

Léeme cada fila de la hoja origen y

Si columna2.Value = 2

escribe la fila en la hoja destino

Else

Pasa de todo

End

Estoy con el VBA abierto creando procedures...

JM

#4
No te funcionaria meterle un boton a la hoja destina y en el evento meterle algo asi :


For a = 1 to sheets.count-1
      Sheets(a).Select
    If Sheets(a).Cells(1, 1) = "21" Then
         Range("A1").Select
        ActiveSheet.Copy
        Sheets("Hoja3").Select
        Range("A3").Select
        ActiveSheet.Paste
    End If
next

mas o menos

In God we trust (sometimes, some pictures: http://www.areopago.eu/index.php?topic=888.msg574445#msg574445 )... (C) Extineo

Agarkala

Qué profesional...espera que lo comprenda, pero tiene buena pinta.

Estoy haciendo una macro rupestre y de momento parece que algo hace.

JM

Si grabas la macro como te decia antes, haciendolo de una sola hoja, luego le añades elbucle sustituyes los nombres de las hojas por la variable y tal, tendria que funcionar.
In God we trust (sometimes, some pictures: http://www.areopago.eu/index.php?topic=888.msg574445#msg574445 )... (C) Extineo

Agarkala

Gracias, JM...

Acabo de caer en que el jefe tiene OpenOffice y la macro no va. Me cago en diox bendito.

JM

In God we trust (sometimes, some pictures: http://www.areopago.eu/index.php?topic=888.msg574445#msg574445 )... (C) Extineo

yonnon

Cita de: Agarkala en Agosto 19, 2010, 08:42:27 PM
Gracias, JM...

Acabo de caer en que el jefe tiene OpenOffice y la macro no va. Me cago en diox bendito.

;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D

Yo he atendido a gente que para poner unos valores en excel (una conversion de moneda)  abrian una pagina web que tenia un cajoncito para conversion de unidades, las hacian alli, una a una y las pegaban en cada celda :-) .

Esto si es para nota

Agarkala

Ya sé que a nadie le interesa, perome he pasado 3 dí­as sumergido en el mundo del Starbasic ese, y gracias a un manualillo cojonudo he hecho una macro que no sólo llena las hojas, sino que da formato y lo pone todo preciososososososososo.

Gracias, gentes

Dan


Agarkala

Si es que soy más apañao...y ya ves, aquí­ soltero.

JM

mola mas abrir, configurar y trabajar una hoja desde un programa creado en vb.net, en serio, mucho mejor que las mismas macros de excel y puedes controlar incluso la respuesta a eventos del propio excel de manera bastante sencilla.
In God we trust (sometimes, some pictures: http://www.areopago.eu/index.php?topic=888.msg574445#msg574445 )... (C) Extineo

Baku

Cita de: JM en Agosto 26, 2010, 09:48:26 AM
mola mas abrir, configurar y trabajar una hoja desde un programa creado en vb.net, en serio, mucho mejor que las mismas macros de excel y puedes controlar incluso la respuesta a eventos del propio excel de manera bastante sencilla.

¿Aun no te has enterao que lo ha tenido que hacer para openoffice?

Que también podí­a haberlo hecho como tú dices ahí­ (http://api.openoffice.org/). Pero creo que Java habrí­a sido más apropiado en este caso.
It's very difficult todo esto.