Скрыть ячейки при печати в Excel

Я использую Excel 2007. У меня есть оценочный лист, который я буду использовать для отслеживания информации о клиентах. Существует некоторая низкоуровневая информация, которую клиент не должен видеть в своей версии документа. Я надеюсь достичь следующих результатов:

при печати будут показаны только строки с данными в первой ячейке "номер задачи" в столбце А. То, как я считаю, что это выполнимо, - это сценарий VBA, чтобы скрыть все строки без данных в первой ячейке при печати и отобразить их впоследствии.

ссылка на шаблон документа в Google Docs

Если возможно, средняя секция должна быть расширяемой, чтобы взять на себя дополнительные задачи и тому подобное, хотя, вероятно, проще всего иметь 100 ячеек в средней секции, которые соблюдают правила скрытия.

25
задан Ben N
11.12.2022 13:53 Количество просмотров материала 2518
Распечатать страницу

3 ответа

вот удар по коду, который вам требуется. Скрытие и отображение строк легко, если вы знаете, как. Я распечатал рабочий лист с макро-рекордером, чтобы вы могли увидеть, как вы можете адаптировать печать, если хотите. Я бы установил ярлык для запуска этого макроса.

Option Explicit
Sub PrintNonBlankColA()

  Dim RowCrnt As Integer
  Dim RowLast As Integer

  ' Note: This operates on the active worksheet

  Application.ScreenUpdating = False

  RowLast = Cells.SpecialCells(xlCellTypeLastCell).Row

  ' Hide all rows with a used cell and column "A" empty
  For RowCrnt = 1 To RowLast
    If IsEmpty(Cells(RowCrnt, "A")) Then
      Range(RowCrnt & ":" & RowCrnt).EntireRow.Hidden = True
    End If
  Next

  ' For the following statements, I switched on the macro recorder,
  ' printed a sheet with all the headers and footers I wanted,
  ' switched off the macro recorder and copied the code out of the
  ' saved macro.
  ' Consider: .CenterHeader = "Activities for Acme Inc"
  ' If you name the worksheets for the client, the following would
  ' give you a heading for the appropriate client:
  ' .CenterHeader = "Activities for " & ActiveSheet.Name
  With ActiveSheet.PageSetup
      .PrintTitleRows = ""
      .PrintTitleColumns = ""
  End With
  ActiveSheet.PageSetup.PrintArea = ""
  With ActiveSheet.PageSetup
      .LeftHeader = ""
      .CenterHeader = "Activities for Acme Inc"
      .RightHeader = ""
      .LeftFooter = "&D"
      .CenterFooter = "Page &P of &N"
      .RightFooter = "Copyright Nadir Co."
      .LeftMargin = Application.InchesToPoints(0.75)
      .RightMargin = Application.InchesToPoints(0.75)
      .TopMargin = Application.InchesToPoints(1)
      .BottomMargin = Application.InchesToPoints(1)
      .HeaderMargin = Application.InchesToPoints(0.5)
      .FooterMargin = Application.InchesToPoints(0.5)
      .PrintHeadings = False
      .PrintGridlines = False
      .PrintComments = xlPrintNoComments
      .CenterHorizontally = False
      .CenterVertically = False
      .Orientation = xlPortrait
      .Draft = False
      .PaperSize = xlPaperA4
      .FirstPageNumber = xlAutomatic
      .Order = xlDownThenOver
      .BlackAndWhite = False
      .Zoom = 100
      .PrintErrors = xlPrintErrorsDisplayed
  End With
  ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

  ' Unhide all rows
  Cells.EntireRow.Hidden = False

End Sub

загрузка кода в модуль

изнутри Excel:

  • выберите Tools затем Macro затем Visual Basic Editor. В качестве альтернативы, нажмите кнопку Alt+F11. вы будете вероятно, окно проекта слева, открывшееся окно внизу с основной массой серого экрана.
  • выберите Insert затем Module. Серая секция станет белой.
  • скопируйте и вставьте мой код в белый раздел. Теперь макрос можно запустить на любом листе.

через макрос

  • переключиться на Excel.
  • выберите Tools затем Macro затем Macros.... Альтернативно, нажмите Alt+F8. Появится небольшое окно макроса. У вас будет только один макрос, поэтому он будет выбран и Run кнопка будет активна.

вы можете запустить макрос, нажав кнопку Alt+F8 затем Enter но вы могли найти следующее более удобным.

  • в окне макроса выберите Options. Теперь вы увидите небольшое окно параметров макроса.
  • введите букву (Я всегда использую q) в маленькое поле и нажмите OK.
  • закройте окно макроса.

теперь вы можете переключиться на соответствующий рабочий лист клиента и нажать Ctrl+q для запуска макроса.

настроить макрос для ваших требований

в середине кода моя идея, как можно настроить отчет "деятельности для компании Acme" в верхней и дата, номер страницы и копирайт внизу.

заменить этот код следует:

  • из Excel, выберите Tools затем Macro затем Record New macro. Вы видите небольшое окно макроса записи.
  • убедитесь, что в текстовом поле "Сохранить макрос в: "написано" Эта книга".
  • клик OK. Окно исчезает. Ты may см очень маленькое окно с квадратной кнопкой с надписью остановить запись. Если это окно видно, проигнорируйте его на данный момент.
  • печать клиентского отчета с любыми заголовками, колонтитулы, поля и т. д. вы требуете.
  • если вы видите небольшое окно, нажмите на него. Если вы не видите его, выберите Tools затем Macro затем Stop Recording.
  • переключиться на редактор Visual Basic. Появится новый модуль. Щелкните по нему в окне обозревателя проектов.
  • вы увидите Sub Macro1() все заявления, чтобы распечатать отчет клиента так, как вам нравится и End Sub.
  • скопируйте эти операторы (не sub и end sub) и вставьте их поверх верх эквивалентных операторов в моем макросе.

если в заголовки и нижние колонтитулы отчета не включено имя клиента, макрос будет готов к использованию. Я приведу один пример в своем коде, где я использую имя листа в заголовке отчета. Не зная ваших точных требований я не могу быть более точным, но я надеюсь, что это дает вам начать.

1
отвечен Tony Dallimore 2022-12-12 21:41

Так что вопрос? Если ее "Как скрыть ячейки/строки при печати" тогда ответ заключается в использовании Workbook_BeforePrint событие для настройки листа для печати выполните печать, затем восстановите предыдущий вид.

0
отвечен chris neilsen 2022-12-12 23:58

вы можете попробовать выбрать ячейки, которые вы хотите скрыть, перейдите в формат, затем защита, а затем скрыты. Затем выберите вкладку Обзор, защитить лист. Оставьте пароль пустым, затем распечатайте.

когда вы хотите клетки назад, как раз отожмите unprotect лист.

немного более утомительно, чем делать это с макросом, но в то же время проще.

0
отвечен Biosci3c 2022-12-13 02:15

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх