7 de abril de 2008

Pie de página II

Continúa de la nota anterior.

Veamos ahora el segundo caso, agregar pie de página al insertar una hoja nueva. La única manera de lograr esto es escribiendo una macro dentro del libro mismo al que le estaremos insertando hojas. No podemos escribirla dentro del libro de macros personal, ya que no se trata de una macro "normal", sino de una macro de evento. Estas macros de evento se ejecutan automáticamente al realizarse determinada acción (el evento) por parte del usuario. En este caso, se trata del evento NewSheet. Todo el código que asociemos a este evento se ejecutará única y exclusivamente al insertar una hoja en el libro lo contiene. Es por esto que no podemos guardarlo en el libro de macros personal, ya que en ese caso solo se ejecutaría al insertar una hoja en este mismo libro de macros personal, lo cual nunca sucederá, ya que este libro solo lo utilizamos como contenedor de nuestras macros de uso general, además de que está oculto. Como dije al principio, ya habrá tiempo para profundizar en este tema.

Seguimos los siguientes pasos:

Asegúrense de tener abierto el libro al cual asignarán el código. Acto seguido, abrimos el editor de Visual Basic (Alt + F11). Identificamos el libro en el que queremos trabajar en el Explorador de proyectos y damos doble clic en él.


Abrimos la subcarpeta Microsoft Excel Objetos y doble clic en el objeto ThisWorkbook.

En la primera lista despleglable de la parte superior del Editor, seleccionamos Workbook, y en la segunda lista selecionamos NewSheet:


Con esto aparecerán en el Editor la primera y la última línea de código del evento NewSheet. En medio de estas dos líneas, escribimos el mismo código de la nota anterior, excepto la primera y la última líneas, debiendo quedar como sigue:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim ws As Worksheet

Dim nombre As String

Set ws = ActiveSheet

nombre = Application.UserName

---With ws.PageSetup

------.LeftFooter = "&11&Z&F"

------.CenterFooter = "&11&D"

------.RightFooter = "&""Arial,Normal""&11Elaboró: " & _

---------UCase(Left(nombre, 1)) & Mid(nombre, 2, InStr(1, nombre, ".") - 2) _

---------& " " & UCase(Mid(nombre, InStr(1, nombre, ".") + 1, 1)) & _

---------Mid(nombre, InStr(1, nombre, ".") + 2)

---End With

End Sub

Finalmente, hacemos una prueba. Dado que esta es una macro del evento NewSheet, simplemente insertamos una hoja en el libro. Si lo hicieron correctamente, pueden comprobar que ya contiene pie de página.

Finalizamos en la siguiente nota.

No hay comentarios.:

Publicar un comentario

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Excel, Excel 2003, Excel 2007 y el logo XL son marcas registradas de Microsoft Corporation.