Excel VBA для поиска заголовков PrintArea и автоматического PageBreak - PullRequest
0 голосов
/ 12 октября 2018

У меня есть лист «Форма заполнения», где пользователь заполняет информацию, а затем у меня есть лист «Версия для печати», который фактически печатается.Я делаю «инструмент CV», поэтому пользователь заполняет свою личную информацию, а затем мой текущий VBA сохраняет конечный файл из «Версия для печати» в xls.и .pdf в одну и ту же папку с определенным именем в обоих файлах, где находится мой «инструмент CV».Некоторые люди имеют опыт работы 10 лет на 10 различных рабочих местах, а другие были только в 2 разных компаниях ранее.Поэтому перед сохранением в .pdf и .xls мой VBA скрывает пустые строки, чтобы конечный результат выглядел хорошо.

Проблема в том, что эстетически это не очень хорошо выглядит, потому что некоторые заголовки рабочих позиций находятся в концестраницы и описание работы продолжается на следующей странице.Можно ли каким-то образом заставить VBA искать каждую страницу в «PrintArea», и, если определенный блок не умещается на этой странице, VBA вставит «Разрыв страницы» перед тем, как переместить его на следующую страницу?

Мой текущий макрос ниже (Sub doitallplease() является основной командой):

Sub Color()
    Dim myRange As Range
    Dim cell As Range
    Set myRange = ThisWorkbook.Sheets("Print version").Range("Print_Area")
        For Each cell In myRange
        myRange.Interior.ColorIndex = 0
        If cell.HasFormula = True And cell.value = "" And cell.EntireRow.Hidden = False Then Rows(cell.Row).EntireRow.Hidden = True
    Next
End Sub
Sub MagicButton()
    Dim iFileName$, iRow&, iCol&, iCell As Range, iArr
    iFileName = ThisWorkbook.Path & "\CV_" & Sheets("Filling form").Range("F7") & "_" & Sheets("Filling form").Range("F9") & ".xls"
    iArr = Array(1, 3, 4): iCol = UBound(iArr) + 1

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Calculation = xlManual

    ThisWorkbook.Sheets("Print version").Copy
    With ActiveWorkbook.ActiveSheet
         .Buttons.Delete '.Shapes("Button 1").Delete
         .UsedRange.value = .UsedRange.value
         .SaveAs iFileName, xlExcel8: .Parent.Close
    End With

    Application.Calculation = xlAutomatic
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
Sub exportpdfthisfile()
        ActiveWorkbook.Sheets("Print version").Select
        ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=ThisWorkbook.Path & "\CV_" & Sheets("Filling form").Range("F7") & "_" & Sheets("Filling form").Range("F9") & ".pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False

End Sub
Sub doitallplease()

Application.ScreenUpdating = False

      ActiveWorkbook.Sheets("Print version").Visible = True


Call Color
Call MagicButton
Call exportpdfthisfile
ActiveWorkbook.Sheets("Filling form").Activate

ActiveWorkbook.Sheets("Print version").Visible = False

Application.ScreenUpdating = True

End Sub
...