Problema despues de actualizar, con los margenes

02/02/2005 - 22:01 por jose bellot | Informe spam
he actualizado mi version de office 2000 a 2003 y me he encontrado con la
sorpresa de que en excel los margenes han cambiado, en excel 2000 estaban a 0
y en excel 2003 estan a 2 o 2,5. Esto no seria ningún problema si empezará a
trabajar de cero, pero no es asi, y tengo un monton de facturas realizadas en
excel, que al actualizar mi version, se ha descuadrado y tengo que ir una a
una cuadrandolas. ¿existe alguna manera de poder predeterminar los margenes
de la aplicacion a cero? lo que quiero no es crear una plantilla para que mis
nuevos documentos tengan ese margen. lo que quiero es que mis documentos
antiguos se abran con su margen.


Gracias por adelantado.
 

Leer las respuestas

#1 Fernando Arroyo
03/02/2005 - 12:14 | Informe spam
"jose bellot" escribió en el mensaje news:
he actualizado mi version de office 2000 a 2003 y me he encontrado con la
sorpresa de que en excel los margenes han cambiado, en excel 2000 estaban a 0
y en excel 2003 estan a 2 o 2,5. Esto no seria ningún problema si empezará a
trabajar de cero, pero no es asi, y tengo un monton de facturas realizadas en
excel, que al actualizar mi version, se ha descuadrado y tengo que ir una a
una cuadrandolas. ¿existe alguna manera de poder predeterminar los margenes
de la aplicacion a cero? lo que quiero no es crear una plantilla para que mis
nuevos documentos tengan ese margen. lo que quiero es que mis documentos
antiguos se abran con su margen.


Gracias por adelantado.



Los márgenes corresponden a cada hoja, así que, hasta donde yo sé, no es posible cambiar los predeterminados de los libros ya hechos (habría que abrirlos y hacer las modificaciones, bien a mano o bien por código)

Una posibilidad sería modificarlos por código en el momento en que se vayan a imprimir. El tema es un poco complicado porque requiere el uso de un módulo de clase. Tendrías que:
- crear un nuevo libro
- pegar lo siguiente en el módulo del libro (en ThisWorkbook):


Dim Instancia As New Clase1

Private Sub Workbook_Open()
Set Instancia.App = Application
End Sub

- crear un módulo de clase (Insertar->Módulo de clase) y llamarlo Clase1 (por defecto debería llamarse así)
- pegar lo siguiente como código del módulo de clase:

Public WithEvents App As Application

Private Sub App_WorkbookBeforePrint(ByVal Wb As Workbook, Cancel As Boolean)
With ActiveSheet.PageSetup
If .LeftMargin + .RightMargin + .TopMargin + .BottomMargin + .HeaderMargin + .FooterMargin > 0 Then
If MsgBox("¿Desea poner los márgenes a cero?", Buttons:=vbYesNo + vbQuestion) = vbNo Then Exit Sub
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 0
.HeaderMargin = 0
.FooterMargin = 0
End If
End With
End Sub

- guardar el libro.


Si luego cargas este libro, cada vez que imprimas algo o hagas una vista previa en la 'sesión' en que lo cargaste, el código preguntará si deseas poner los márgenes a cero, y si contestas que sí lo hará.
Un saludo.


Fernando Arroyo
MS MVP - Excel

Preguntas similares