Saltar al contenido

Calcular o detectar las lineas discontinuas divisorias entre paginas de impresion.


Recommended Posts

publicado

Hola,

Estoy intentando determinar en que se basa el excel para establecer las (L)íneas (D)iscontinuas (Q)ue (S)eparan (L)as (Z)onas (Q)ue (V)an (A) (S)er (I)mpresas, o para abreviar (LDQSKZQVAS), que segun mi experiencia, varian a la hora de modificar alturas, anchuras y formatos de celda, (Me refiero a esas lineas misteriosas que aparecen al regresar a la hoja tras haber realizado una vista preliminar de la hoja)

En cada prueba que he realizado, antes de tomar las medidas, he aumentado la altura de la celda anterior a la LDQSKZQVAS para ajustar la línea al máximo, o dicho de otra forma, dejando la altura de la fila anterior a la LDQSKZQVAS de tal forma que aumentando la altura de la fila anterior a la LDQSKZQVAS en tan solo un pixel, haría que la LDQSKZQVAS cambiara de posición a la fila anterior. (Es difícil explicar esto..)

Por la web no he encontrado nada, y haciendo pruebas por mi cuenta he observado que la LDQSKZQVAS mantiene una cierta altura, (digamos 807) en el caso de la configuración de márgenes y estilo de mi hoja, pero este dato es muy variable dependiendo de los formatos de las celdas.

Para hacer las pruebas, he usado una macro que tomaba dos valores:

1. La suma de la altura de todas las celdas anteriores a la LDQSKZQVAS

2. El top de la celda posterior a la LDQSKZQVAS.

Sub ContadorDeFilas()
Dim ContaFila As Double
For i = 1 To ActiveCell.Row
ContaFila = ContaFila + Rows(i).RowHeight
Next
ActiveCell = ContaFila
MsgBox ContaFila & Chr(10) & Cells(ActiveCell.Row + 1, 1).Top
End Sub[/CODE]

He observado que generalmente ambos datos coinciden, pero a la hora de modificar formatos, dichos datos varían y nunca llego a una conclusión que me lleve a identificar de manera programática como podría establecer yo en que punto de la hoja, excel va a mostrar las LDQSKZQVAS.

Espero haberme explicado medianamente bien. Sé que esta es difícil jejeje.

Un saludo.

PD: Si no encuentro solución no pasa nada ya que tengo la medida aproximada que es 807, y puedo calcular los bordes de impresión a partir de este factor, pagina1 807, pagina2 1614, etc., y que por ahora me va bien, pero que tarde o temprano cuando vaya por la pagina 100, empezará a notarse que los datos no terminan donde se supone que deberían terminar. Pero hoy por hoy con 2 páginas que estoy manejando, me va bien con mi solución aproximada y ESTA CONSULTA ES SOLO POR ASEGURARME QUE NO EXISTE ALGÚN METODO MÁS EFICAZ DE DETERMINAR LA ALTURA DE ESTAS MISTERIOSAS LINEAS DISCONTINUAS LDQSKZQVAS

PD2: Misma pregunta que hacen aqui aquí donde muere el hilo sin solución:

VBA Visual Basic for Applications (Microsoft) - How to get the print area with excel vba?

publicado

Quiero mantener los saltos de página donde están (no sabia que se llamaban así jejeje, mas bonito que LDQSKZQVAS), y que desde una celda cualquiera, averiguar a qué página pertenece dicha celda, pero si no se puede, estaría bien saber tu solución de los saltos de página.

PD: Intento evitar los saltos de pagina manuales (que se supone que aparecen como una linea continua), me interesan los que inserta excel automaticamente que son las lineas discontinuas.

- - - - - Mensaje combinado - - - - -

He encontrado algo,

En esta página:

Find Page Breaks Faster

Sub InsertRowPageBreak()
' inserts row if on of the cells before and after page break (in column A) are not blank
Dim ws As Worksheet
Dim rng As Range
Dim pb As Variant
Set ws = ThisWorkbook.Worksheets("Hoja1")
ws.Activate
ActiveWindow.View = xlPageBreakPreview
For Each pb In ws.HPageBreaks
Set rng = ws.Range("A" & pb.Location.Row)
If rng.Value <> "" And rng.Offset(-1, 0).Value <> "" Then
rng.Offset(-2, 0).EntireRow.Insert
End If
Next pb
ActiveWindow.View = xlNormalView
End Sub[/CODE]

Recorre cada salto de página de la colección de elementos .HPageBreaks.

[color=blue]- - - - - Mensaje combinado - - - - -[/color]

Funciona en las hojas nuevas que creo nuevas, pero en las existentes no me crea la coleccion de elementos pb. Si averiguo algo lo comento.

[color=blue]- - - - - Mensaje combinado - - - - -[/color]

Vale, ya casi lo tengo.

En el modulo 3 del adjunto, la función “PruebasPageBreak”, muestra una lista con las líneas de cada salto de pagina.

En la “Hoja1” que es una hoja que he agregado para hacer las pruebas, la macro funciona y muestra la lista de saltos de pagina, navegando en VBA por locales, pueden verse toda la colección de objetos de HPageBreak.Location.

Sin embargo, en la hoja que me interesa “Plantilla Medidas”, da un error al intentar recorrer la colección de elementos ya que dicha colección de elementos no se crea.

¿Alguna idea?

Entre el calor sevillano y el calentamiento de pensar en una solucion, creo que se me va a derretir el cerebro jajaja.:miserable:

[color=blue]- - - - - Mensaje combinado - - - - -[/color]

Tema solucionado, Gracias a Antoni que me ha inspirado para dar con la solución. :very_drunk:, si no llegas a decir lo de Saltos de página, aún andaría mas perdio que Pedro por los Alpes.

He copiado los datos y formatos a otra hoja y el problema se ha solucionado, algo habría defectuoso en la página que estaba usando.

Dejo el código por si a alguien le interesa también saber cómo obtener la posición exacta de los saltos de página:

[CODE]
Option Explicit
Sub PruebasPageBreak()

Dim ws As Worksheet
Dim pb As Variant
Dim Frase As String
Set ws = ActiveSheet

'ActiveWindow.View = xlPageBreakPreview
For Each pb In ws.HPageBreaks
Frase = Frase & ", " & pb.Location.Row
Next pb
'ActiveWindow.View = xlNormalView

MsgBox Frase
End Sub[/CODE]

Saludos y ya podéis dar el tema por solucionado.

Pruebas Salto Pagina2.xls

publicado

Retomo el hilo para decir que el problema me seguía sucediendo y que antes no me dio un error por la casualidad de tener seleccionada la ultima celda a la hora de hacer las pruebas, así que he seguido buscando y he encontrado el problema real.

Es un fallo de Microsoft, y no tiene arreglo, pero en su página proponen algunas soluciones:

Recibe un mensaje de error "Subíndice fuera del intervalo" cuando utiliza HPageBreaks o VPageBreaks.Location en Excel

Con lo que ya he podido sacar definitivamente mi código adelante y doy el tema por finalizado, (esta vez de verdad)

Me quedo con lo de LDQSKZQVAS,....jajaja

dificil de pronunciar, parece arabe jajaja

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.