Foros del Web » Soporte técnico » Ofimática »

Macro de Excel

Estas en el tema de Macro de Excel en el foro de Ofimática en Foros del Web. Necesito saber si es posible hacer una macro para excel para que dado un libro con varias hojas, pueda generar automaticamente un libro nuevo por ...
  #1 (permalink)  
Antiguo 16/04/2007, 09:30
 
Fecha de Ingreso: marzo-2007
Mensajes: 113
Antigüedad: 17 años, 1 mes
Puntos: 0
Macro de Excel

Necesito saber si es posible hacer una macro para excel para que dado un libro con varias hojas, pueda generar automaticamente un libro nuevo por cada hoja del libro anterior
  #2 (permalink)  
Antiguo 16/04/2007, 12:43
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
Sonrisa Re: Macro de Excel

Prueba con:
Código:
Sub CopiaHojas()
    Application.ScreenUpdating = False
    MyBook = ActiveWorkbook.Name
    For ii = 1 To Sheets.Count
        Workbooks(MyBook).Sheets(ii).Copy
    Next
    Application.ScreenUpdating = True
End Sub
Saludos

Última edición por mrocf; 16/04/2007 a las 12:56
  #3 (permalink)  
Antiguo 16/04/2007, 16:06
 
Fecha de Ingreso: marzo-2007
Mensajes: 113
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Macro de Excel

Muchas gracias, lo he probado y va perfecto. Por cierto se podria hacer tambien que la macro se ejecutase al cerrar el excel en vez de tener que ejecutarla desde Herramientas-->Macro-->Macros

De verdad mrofc muchas gracias no tenia ni idea de macros de excel y necesitaba hacer esto.

Un saludo.
  #4 (permalink)  
Antiguo 16/04/2007, 16:15
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Re: Macro de Excel

Pues, usando el mismo codigo de mrocf:

Sub auto_close()
Application.ScreenUpdating = False
MyBook = ActiveWorkbook.Name
For ii = 1 To Sheets.Count
Workbooks(MyBook).Sheets(ii).Copy
Next
Application.ScreenUpdating = True
End Sub

Otra opcion es que coloques un boton de la barra de formularios en tu hoja, y le asignes la macro en cuestion.

Abraham
  #5 (permalink)  
Antiguo 16/04/2007, 20:10
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
Sonrisa Re: Macro de Excel

Hola!
Supongo que tu "poder de observación" te habrá permitido observar que el código correctamente realizado por abrahamvj es similar al que te aportara previamente... excepto el nombre del procedimiento: auto_close.

Como dices estar recién entrando al "mundo" de las macros, te amplío diciendo que existen 4 nombres de procedimientos que están reservados con exclusividad:

Auto_abrir,
Auto_cerrar,
Auto_activar y
Auto_desactivar


Como sus nombres lo indican, se ejecutan AUTOMÁTICAMENTE ante tales eventos sin necesidad alguna de intervención del usuario.

Saludos
  #6 (permalink)  
Antiguo 17/04/2007, 01:18
 
Fecha de Ingreso: marzo-2007
Mensajes: 113
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Macro de Excel

Muchas gracias a ambos.
  #7 (permalink)  
Antiguo 17/04/2007, 01:33
 
Fecha de Ingreso: marzo-2007
Mensajes: 113
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Macro de Excel

Perdonar otra vez, sabeis tambien alguno como se hace para que los libros generados a partir de las hojas del libro original tomen el nombre de la hoja directamente y no por defecto "Libronº".

Si sabeis de alguna pagina o tutorial para aprender un poco sobre macros os agradeceria mucho, para no estar dando la lata tanto por el foro.

Un saludo
  #8 (permalink)  
Antiguo 17/04/2007, 04:46
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
Sonrisa Re: Macro de Excel

Veamos: los libros definen su nombre a partir que son "guardados" en el disco.

De este modo, y para satisfacer tu necesidad, deberías indicar un par de cuestiones tales como:

a) ¿En que carpeta deseas grabar a los libros generados (por ejemplo: C:\Mis Documentos\Mis Informes)?

b) En la carpeta antes mencionada, ¿podría ocurrir que existan otros libros con el mismo nombre? ¿Sí / No?... Y en caso de ser "Sí" la respuesta: ¿qué hacer en tal caso?

Indícanos estas cuestiones y veremos como complementar lo que te hemos mostrado.

Y en otro órden de cosas: te sugiero que te introduzcas en el tema activando la grabadora de macros y estudiando lo que de ello resulta con la ayuda en línea del propio programa... Es un buen comienzo.

Saludos
  #9 (permalink)  
Antiguo 18/04/2007, 01:26
 
Fecha de Ingreso: marzo-2007
Mensajes: 113
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Macro de Excel

Gracias,lo tendre en cuenta y lo activare.

En cuanto a las cuestiones que me dices, da igual donde se guarden no hace falta que sea una ruta por defecto y si donde se guardan hay ya algun libro con el mismo nombre que se sobreescriba sobre el antiguo.
  #10 (permalink)  
Antiguo 18/04/2007, 04:00
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
Sonrisa Re: Macro de Excel

Bueno, se viene la versión final:
Código:
Sub Auto_Close()
    Application.ScreenUpdating = False
    MyBook = ActiveWorkbook.Name
    MiPath = ActiveWorkbook.Path
    If MiPath = "" Then MiPath = "C:"
        
    For ii = 1 To Sheets.Count
        Workbooks(MyBook).Sheets(ii).Copy
        Application.DisplayAlerts = False
        ActiveWorkbook.Close SaveChanges:=True, _
            FileName:=MiPath + "\" + ActiveSheet.Name
        Application.DisplayAlerts = True
    Next
    Application.ScreenUpdating = True
End Sub
COMENTARIOS:
MiPath = ActiveWorkbook.Path Indica donde está ubicado el archivo donde residen las hojas a guardar

If MiPath = "" Then MiPath = "C:" Si el archivo anterior no había sido guardado, entonces las nuevas hojas se guardan en "C:\".

Application.DisplayAlerts = False Si ya existiesen hojas con el mismo nombre, la aplicación consultaría lo habitual (El archivo 'tal' existe ¿Desea reemplazarlo?). Con esta propiedad se impide tal mensaje.

Saludos
  #11 (permalink)  
Antiguo 19/04/2007, 08:27
 
Fecha de Ingreso: marzo-2007
Mensajes: 113
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Macro de Excel

Muchisimas gracias mrocf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:23.