Excel المحتوى الشرطي / التنسيق للطباعة مقابل الشاشة وكسر الصفحات

StackOverflow https://stackoverflow.com/questions/1183541

سؤال

لدي ماكرو نشر VBA في Excel الذي يولد مصنف منشور يعتمد على ورقة عمل تكوين رئيسية وعدد من أوراق العمل مع البيانات. النسخة المنشورة بيانات مستقيمة، لا تزال مهيأة، ولكن دون أي صيغ ومع بعض الملاحظات ومعلومات أساسية قمعت. أساسا، يحتوي التكوين الرئيسي على جدول أسماء ورقة العمل والنطاقات المراد نشرها.

لجعل النسخة المنشورة قابلة للطباعة، تحتاج بعض أوراق العمل إلى فواصل الصفحة المدرجة. أدرك أنني أستطيع إدراجها بناء على نفس التكوين، ويمكنني أيضا تغيير اتجاه الطباعة والهوامش من ورقة عمل معينة، عن طريق إضافة عدد قليل من الأعمدة إلى ورقة سيدتي.

هنا يأتي قليلا صعبة. إذا كان لدى الجدول بعض فواصل هذه الصفحة المدرجة أثناء عملية النشر، فسأود إدراج صف إعلامي قبل استراحة الصفحة التي تشير إلى أن الجدول يستمر في الصفحة التالية. لكنني أريد فقط أن يظهر هذا في الإصدار المطبوع، لا يتم عرضه في شاشة العرض المضمنة.

هل هناك طريقة للقيام بذلك؟

هل كانت مفيدة؟

المحلول

أولا، أدخل صف وإخفائه قبل استراحة الصفحة. ثم، يمكنك استخدام BeforePrint حدث في المصنف للعثور على جميع الصفوف مع نص "انظر الصفحة التالية" في ذلك، ثم إظهارهم.

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

سيؤدي هذا إلى حد ما كنت بحاجة إلى الذهاب، ومع ذلك، سيتركك عرضة لقضية حقيقة أنه لا يوجد AfterPrint. وبعد لذلك، ما يمكنك القيام به هو ما يلي:

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

لاحظ أن cancel سيخبرك بشكل أساسي إذا كانت معاينة طباعة أو أمر طباعة فعلي. نوعها جدا من ذلك، على ما أعتقد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top