Macros personales

4 envíos / 0 nuevos
Último envío
Andrés
Imagen de Andrés
Offline
última acción: Hace 12 años 6 meses
alta: 17/03/2009 - 07:00
Puntos: 150
Macros personales

Buenas tardes, estoy empezando a manejarme con las macros con más voluntad que exito, así que me gustaría hacer dos preguntas sobre macros. Las dos son igual de dificiles.

La primera es, si existe la posibilidad de hacer macros en la vida real. Me explico. Hay veces cuando me levanto por la mañana que mi cuerpo me pide que liquide todas las tareas del comienzo del día de un plumazo. La ducha, los dientes, afeitarse... ¿existe alguna forma a tra´vés de una macro en la que pueda ir directamente a la mesa con el desayuno puesto y el periodico preparado?

La siguiente cuestión es igual de complicada a mi entender. En el trabajo he hecho una plantilla con varios gráficos. Los graficos son dinámicos ya que vienen de una tabla dinámica. En ellos dan información a distintos aspectos según el departamento que tengas seleccionado en el filtro. Hay varios departamentos en la empresa y me gustaría sacar en pdf un documento con las plantillas de todos los departamentos. Actualmente lo hago manualmente modificando el departamento en el filtro de los gráficos dinámicos y después lo convierto en pdf.

¿Se puede hacer una macro que haga ese trabajo por mi? o es más probable que un día alguien me lleve el desayuno a la cama?

Muchas gracias.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 2 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Macros personales

Respecto de la macro para despertarte, el problema no es la macro, sino en qué evento poner el código y quién lo tiene que ejecutar.

Yo lo pondria en el evento "beep" de tu despertador, que se produce cuando suena la alarma

Private Sub Despertador_beep(ByVal Target As Range)
  Call RutinaMatutina
End Sub

y luego, en tu módulo de código pondría el procedimiento RutinaMatutina con todas las cosas que tengas que hacer por las mañanas, por ejemplo:

Private Sub RutinaMatutina()
  If Me.sueño > vbMucho Then
    Call VolverADormirme
    Exit Sub
  End If
 
  With Me.body
    .bostezar(3)
    .estirarBrazos(1)
    .frotarOjos(2)
    ' y todo lo que se te ocurra
  End With
End Sub

Respecto de lo que comentas de la tabla dinámica, puedes hacerlo sin necesidad de una macro, entre las opciones de la tabla dinámica tienes la de mostrar páginas de filtro de informes que genera en tu libro tantas hojas como sean necesarias cada una con la tabla dinámica con un valor para el campo de página. Una vez creadas estas páginas, con seleccionar todas las estañas e imprimirlas, ya tienes el trabajo hecho en sólo un par de clics de ratón.

 mostrar todos las páginas de una tabla dinámica

Si de todas maneras quieres tener una macro porque no lo vas a usar tú, sino otras personas que tal vez no conozcan esta posibilidad que te acabo de comentar, simplemente bastaría con hacer una macro que fuese cambiando el filtro de página, recorriendo todos los valores que puede tomar este campo que utilizas como filtro de página, e imprimiendo la hoja cada vez o haciendo con ella lo que necesites.

El objeto PivotTable pertenece a la colección PivotTables, que a su vez pertenece al objeto Worksheet.En el objeto PivotTable tenemos la propiedad PageField para obtener los campos que se utilizan como campos de página.Para referirte a cada uno de los datos que tienes en el campo de página tienes el objeto PivotItem

Con todo esto, podrías hacer una macro como esta que recorra todos los elementos del campo de página de la tabla. supongo que sólo hay una tabla dinámica en la hoja que quieres imprimir:

Sub RecorrerTodasLasPáginas()
  ' recorre (e imprime) todas las páginas de la tabla dinámica (suponemos sólo una)
  ' Dentro de la hoja activa
  Dim Campo As PivotField
  Dim ValorPágina As PivotItem
 
  With ActiveSheet.PivotTables(1)'suponemos que sólo hay una tabla
    For Each Campo In .PageFields
      For Each ValorPágina In Campo.PivotItems
        Campo.CurrentPage = ValorPágina.Value
        ActiveSheet.PrintOut
      Next
    Next
  End With

 

 

 


------
Ya sé Excel, pero necesito más
La potencia sin control no sirve de nada.

 

 

End Sub

 

------
Ya sé Excel, pero necesito más.

Andrés
Imagen de Andrés
Offline
última acción: Hace 12 años 6 meses
alta: 17/03/2009 - 07:00
Puntos: 150
Re: Macros personales

Muchísimas gracias.

De momento creo que me voy a conformar con la generación de informes de la tabla dinámica.

es una herramienta tremenda.

Me ha quedado una duda con la macro. Cuando supones que es una sóla tabla, ¿pueden ser varias tablas, copias de una original?

Gracias.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 2 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Macros personales

digo que sólo hay una tabla, porque estoy empleando PivotTables(1) 

 


 

------
Ya sé Excel, pero necesito más.