Frage

Ich habe ein VBA veröffentlichen Makros in Excel einen veröffentlichten Arbeitsmappe erzeugt basierend auf einer Master-Konfigurations Arbeitsblatt und eine Reihe von Arbeitsblatt mit den Daten. Die veröffentlichte Version ist gerade Daten, noch formatierten, aber ohne Formeln und mit bestimmten Notizen und Hintergrundinformationen unterdrückt. Grundsätzlich ist die Master-Konfiguration enthält eine Tabelle von Arbeitsblatt-Namen und Bereichen veröffentlicht werden.

Um die veröffentlichte Version druckbar zu machen, einige der Arbeitsblätter benötigen eingefügt Seitenumbrüche. Ich weiß, ich diese auf der Grundlage der gleichen Konfiguration einfügen können, und ich kann auch die Druckausrichtung und Ränder eines bestimmten Arbeitsblatt ändern, indem Sie ein paar mehr Spalten zu meinem Stammblatt hinzufügen.

Hier kommt der schwierige Bit. Wenn eine Tabelle während des Veröffentlichungsprozesses eingefügt einige dieser Seitenumbrüche hat, möchte ich eine Informationsreihe vor dem Seitenumbruch eingefügt wird, die angibt, dass die Tabelle auf der nächsten Seite fortgesetzt wird. Aber ich will nur diese in der gedruckten Version zeigen, angezeigt nicht in dem On-Screen-Display.

Gibt es eine Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

Zuerst legen Sie eine Zeile und versteckt es kurz vor dem Seitenumbruch. Dann können Sie das BeforePrint Ereignis auf der Arbeitsmappe alle finden Zeilen mit dem „nächste Seite“ Text darin und sichtbar machen sie dann.

Sub Workbook_BeforePrint(cancel as Boolean)
    Dim rngCell as Range
    set rngCell = ActiveSheet.UsedRange.Find("See Next Page")

    while not rngCell is Nothing
        if not rngCell is Nothing then
            rngCell.EntireRow.Hidden = false
        end if
        set rngCell = ActiveSheet.UsedRange.FindNext()
    loop
End Sub

Dies wird Ihnen etwas waren Sie gehen müssen, aber es wird Sie verlassen anfällig für die Frage der Tatsache, dass es keine AfterPrint ist. Also, was Sie tun können, ist die folgende:

Sub Workbook_BeforePrint(cancel as Boolean)
    Application.EnableEvents = false

    'Unhide rows here

    if cancel then
        Workbook.PrintPreview()
    else
        Workbook.PrintOut()
    end if

    'Rehide rows here

    Application.EnableEvents = True
End Sub

Beachten Sie, dass cancel werden Ihnen im Wesentlichen sagen, ob seine eine Druckvorschau oder ein tatsächlicher Druckbefehl. Es ist sehr Art davon, glaube ich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top