Как настроить область печати на одну бумагу

#excel #vba

#excel #vba

Вопрос:

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

 Sub PrintTable()    

With ActiveWorkbook.Sheets("myTable").PageSetup
    .PrintArea = "$A$1:$L$55"
    .FitToPagesWide = 1
    .FitToPagesTall = 1
    .PrintErrors = xlPrintErrorsDisplayed

End With
End Sub
  

Но это не работает, я не знаю, какую часть исправить. Я использовал «Записать макрос», возможно, я удалил некоторые важные строки. Итак, если у вас есть какие-то идеи, пожалуйста, оставьте заметку.

Комментарии:

1. На первый взгляд все выглядит нормально. Что конкретно происходит не так? myTable Лист все еще печатается на четырех страницах? Или это печать шириной в одну страницу, но высотой в несколько страниц, или наоборот? Я думаю, вам может потребоваться установить только одно из FitToPagesWide или FitToPagesTall .

2. Да, там все еще 4 страницы. (синие линии, которые определяют края страниц, находятся внутри первой страницы, что превращает эту страницу в 4)

Ответ №1:

Я только что попробовал это сам, и это работает:

    Application.PrintCommunication = False
   With ActiveSheet.PageSetup
       .FitToPagesWide = 1
       .FitToPagesTall = 1
   End With
   Application.PrintCommunication = True
  

Без настройки

  Application.PrintCommunication
  

при значениях false и true это не работает. Можете ли вы попробовать это?

Комментарии:

1. Это работает! Я видел, что режим был выбран как «настроить на одну страницу». Это то, что мне нужно. Спасибо!

Ответ №2:

Редактировать Согласно этому объяснению, Zoom сначала должно быть установлено значение False . Попробуйте:

 .Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = 1
  

вместо двух .FitToPages строк, которые у вас есть сейчас.

Оригинальный ответ

Согласно этому сообщению на форуме, попробуйте либо

 .Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
  

или

 .Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = False
  

вместо двух .FitToPages строк, которые у вас есть сейчас.

Комментарии:

1. Да! Это работает! Я не вижу причины, но теперь это работает 🙂

2. @Hiddenllyy Рад это слышать! Обновленный с .Zoom=False или один из других?

3. Я попробовал вторую, и поэтому режим pint был «настроить столбец». Но первое в этом случае не работает. Это странно.