Как распечатать несколько файлов excel сразу
Перейти к содержимому

Как распечатать несколько файлов excel сразу

  • автор:

покупка

Как распечатать сразу все / несколько вкладок в Excel?

В общем, нажав Файл > Печать / PDF будет печатать только текущую вкладку листа в Excel. Хотя в некоторых случаях вам может потребоваться распечатать все или несколько вкладок листов вместе. Как бы вы могли решить эту проблему? В этой статье будут представлены два решения:

  • Распечатать сразу все вкладки в книге
  • Печатать сразу несколько вкладок в книге
  • Пакетная печать нескольких выбранных элементов на нескольких вкладках листа на одной странице
Распечатать сразу все вкладки в книге

Распечатать все вкладки листов в книге легко с помощью Распечатать всю книгу функция в Excel. Пожалуйста, сделайте следующее:

1. Откройте указанную книгу, которую хотите распечатать, и нажмите Файл > Печать / PDF.

2. Вперед, чтобы выбрать Распечатать всю книгу из раскрывающегося списка ниже Настройки, затем укажите принтер и щелкните Печать / PDF кнопка. Смотрите скриншот:

Теперь все вкладки листов в книге распечатываются сразу.

Печатать сразу несколько вкладок в книге

Если вы хотите распечатать несколько листов в книге вместе, сделайте следующее:

1. Откройте указанную книгу, а затем выберите несколько вкладок листов, которые нужно распечатать.

Внимание: Держа Ctrl клавишу, вы можете выбрать несколько несмежных вкладок листов, щелкая их одну за другой; проведение Shift клавишу, вы можете выбрать несколько соседних вкладок листа, щелкнув первую и последнюю.

2. Нажмите Файл > Печать / PDF.

3. Вперед, чтобы выбрать Печать активных листов в раскрывающемся списке ниже Настройки, укажите принтер и щелкните Печать / PDF кнопку.

Теперь одновременно распечатываются только выбранные вкладки листов.

Пакетная печать нескольких выбранных элементов на нескольких вкладках листа на одной странице в Excel

Kutools для Excel Мастер печати множественных выделений может помочь вам не только легко распечатать все области печати с одного рабочего листа на одной странице, но и легко распечатать несколько диапазонов из многих рабочих листов на одной странице.

Массовая печать в Windows

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

Анализируем ситуацию и собираем данные

Тема пакетной печати не раз освещалась в трудах великих учёных интернет-статьях. Например, в этой и этой.

Мы же начнем с выяснения того, какой функционал нужен конечным пользователям. В результате общения с коллегами получися такой список:

  • печатать нужно только XML-файлы;
  • форматирование для XML не требуется;
  • на бумаге, помимо содержимого, должно быть указано и имя печатаемого файла;
  • файлы должны быть отсортированы по имени, чтобы было удобно подшивать бумажные листы в архив.

Но у такого способа есть, как минимум, два недостатка:

  1. нельзя напечатать больше 15 файлов за раз;
  2. файлы печатаются в случайном порядке (возможно, логика все же есть, но я ее не нашел), а не так, как они отсортированы в проводнике.

Выбираем инструмент и разрабатываем решение

Примечание. Чтобы не переводить бумагу, на этапе подготовки и тестирования скрипта удобно использовать виртуальный принтер. Меня устроил штатный Microsoft XPS Document Writer, но есть еще PDF24 Creator, doPDF, CutePDF Writer — как говорится, на вкус и цвет…

В качестве языка был выбран PowerShell. В базовой комплектации скрипт выглядит так:

Вариант 0

$FolderToPrint = "\\server\share\Folder" $FileMask = "*.xml" $FolderToPrint | Get-ChildItem -File -Filter $FileMask | Sort-Object Name | ForEach-Object < Write-Output ("Печать файла `"" + $_.FullName + "`"") Start-Process -FilePath notepad -ArgumentList ("/P `"" + $_.FullName + "`"") -Wait >

Печать выполняется средствами штатного блокнота Windows (чтоб не простаивал без дела).
Как видно из 3-й строки, сортировка в примере происходит по имени файла (Name). Вместо этого можно взять за основу размер (Length) или дату изменения (LastWriteTime). Если вам требуется что-то более экзотичное, можно зайти сюда.

Для сортировки в обратном порядке у командлета Sort-Object есть ключ -Descending.

В этом варианте печать идет на принтер по умолчанию, и нас такое поведение устроило. Если же нужно печатать на принтер, отличный от дефолтного, у блокнота есть параметр /PT.

Соответственно, код примет следующий вид:

 $PrinterName = "\\server2\Network Printer" Start-Process -FilePath notepad -ArgumentList ("/PT `"$PrinterName`" `"" + $_.FullName + "`"") -Wait

Аналогично вместо блокнота можно поэксплуатировать любую другую программу в зависимости от того, какой формат файлов нужно печатать. Главное — чтобы она поддерживала печать через интерфейс командной строки.

Примечание. Если будете приручать Adobe Reader, имейте в виду этот старый баг. В нашем окружении он все еще проявляется, возможно, вам повезет больше. А еще есть хорошая статья, посвященная печати PDF из PowerShell.

Если же вам на выходе нужен только «голый» текст из обычного текстовика, то 5-я строка варианта 0 примет такой вид:

 Get-Content $_.FullName | Out-Printer -Name $PrinterName 

Для печати на дефолтный принтер параметр -Name нужно опустить.

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

Вариант 1

$FolderToPrint = @( "\\server1\share\Folder1", "\\server1\share\Folder2", "\\server1\share\Folder3" ) $FileMask = "*.xml" $ErrorActionPreference = "Stop" Try < $FolderToPrint | Get-ChildItem -File -Filter $FileMask | Sort-Object Name | ForEach-Object < Write-Output ("Печать файла `"" + $_.FullName + "`"") Start-Process -FilePath notepad -ArgumentList ("/P `"" + $_.FullName + "`"") -Wait >> Catch

Для приличия добавлена функция обработки исключений. И в случае, если, например, папка, из которой печатаются файлы, стала недоступной, то выполнение печати прервется и пользователю будет выведено соответствующее уведомление. Кстати, замечено, что блокнот возвращает в exit-коде 0 даже при попытке распечатать несуществующий/недоступный файл, но в GUI при этом ругается.

Опробовав вариант 1, пользователи попросили дать возможность выбора папки и конкретных файлов в ней, поэтому было добавлено немного интерактивности в виде диалогового окна выбора файлов. Так появился

Вариант 2

Add-Type -AssemblyName System.Windows.Forms | Out-Null $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog $OpenFileDialog.InitialDirectory = "\\server\share" $OpenFileDialog.Multiselect = $True $OpenFileDialog.Filter = "XML-файлы (*.xml)|*.xml|Все файлы (*.*)|*.*" $OpenFileDialog.ShowHelp = $true $OpenFileDialog.ShowDialog() | Out-Null $FilesToPrint = $OpenFileDialog.FileNames | Sort-Object ForEach ($FullFileName in $FilesToPrint) < Write-Output "Печать файла `"$FullFileName`"" Start-Process -FilePath notepad -ArgumentList ("/P `"$FullFileName`"") -Wait >

Теперь при запуске получаем привычное окно проводника Windows с удобным выбором нужных файлов:

Подробнее о работе с диалоговым окном открытия файлов можно почитать в официальной документации, а кто хочет узнать больше про GUI-зацию PowerShell, легко найдет много материала в сети, есть даже онлайн-конструктор форм.

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

При запуске кода из ISE диалоговое окно выбора файлов выводится на заднем плане (Ctrl+Tab в помощь), но из командной строки все работает как положено. Также обратите внимание, что свойство ShowHelp должно быть $true, чтобы обойти этот баг.

Еще хотелось бы обратить внимание на свойство InitialDirectory. Кэп подсказывает, что оно определяет путь к папке, которая будет выбрана по умолчанию при запуске скрипта. Но, учитывая, что проводник «запоминает» последнее выбранное расположение, которое было указано пользователем в диалоге выбора файлов, InitialDirectory может пригодиться только при первом запуске скрипта.

Вариант 2 полностью подошел нашим пользователям, поэтому на нем мы и остановились. Но если вам нужен вариант с дамами и преферансом интерактивностью и сортировкой, отличной от имени (например, по дате изменения), это тоже реализуемо. Получаем

Вариант 3

Add-Type -AssemblyName System.Windows.Forms | Out-Null $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog $OpenFileDialog.InitialDirectory = "\\server\share" $OpenFileDialog.Multiselect = $True $OpenFileDialog.Filter = "XML-файлы (*.xml)|*.xml|Все файлы (*.*)|*.*" $OpenFileDialog.ShowHelp = $true $OpenFileDialog.ShowDialog() | Out-Null $SelectedFiles = $OpenFileDialog.FileNames #Если ничего не выбрано, завершаем работу If (!($SelectedFiles)) < Break >#На основании полного имени выбранного файла определяем выбранную папку $SelectedDir = (Split-Path -Parent $OpenFileDialog.FileName) #Получаем список всех файлов в выбранной папке $FilesToPrint = Get-ChildItem -Path $SelectedDir -Force | #отбираем только те из них, которые были выбраны в диалоговом окне Where-Object | #и сортируем Sort-Object -Property LastWriteTime ForEach ($File in $FilesToPrint) < $FullFileName = $File.FullName Write-Output "Печать файла `"$FullFileName`"" Start-Process -FilePath notepad -ArgumentList ("/P `"$FullFileName`"") -Wait >

Т.к. из объекта $OpenFileDialog нельзя напрямую извлечь такие параметры, как размер или дату создания файла, то мы с помощью командлета Get-ChildItem получаем список всех файлов в папке, выбранной пользователем, а потом оставляем только те из них, которые были выбраны пользователем, и сортируем их в нужном нам виде.

Отдаем в продакшн

Убедившись, что всё работает как надо, кладем скрипт в сетевую папку и выводим пользователям ярлык на рабочий стол.

А чтобы наш маленький беззащитный скрипт не обижали злые Execution Policies, прячем его в такую скорлупу:

powershell.exe -NoLogo -ExecutionPolicy Bypass -File "\\server\share\Scripts\BulkPrint.ps1"

Или можно обернуть в теплый ламповый батник.

Среди прочего, в корпоративной среде запуску скрипта могут мешать суровые Software Restriction Policies и безжалостный AppLocker, а также другое защитное ПО, но это уже выходит за рамки статьи.

Можно добавить лоска, установив красивый значок для ярлыка. Я выбрал такой:

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

Итог

Такое бывает, если выкатить без предварительного тестирования.

А у нас будет вот так:

И крамольная мысль напоследок: а что, если подумать в другом направлении и вместо всего описанного выше пообщаться с начальством и перестроить рабочий процесс?

  • Системное администрирование
  • PowerShell
  • IT-инфраструктура
  • Серверная оптимизация
  • Серверное администрирование

Как напечатать сразу несколько документов c помощью Print Conductor

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

  1. Запустите программу Print Conductor
  2. Добавьте файлы в список документов
  3. Выберите нужный принтер
  4. Нажмите на кнопку “Старт печати”
  • Главная
  • Обзор программы
  • Возможности
    • Поддерживаемые форматы файлов
    • История версий

    Печать листов и книг

    Печатайте листы и книги Excel как по одному, так и по несколько штук одновременно. Кроме того, можно распечатать часть таблицы Excel отдельно.

    Печать одного или нескольких листов

    1. Выберите листы, которые требуется распечатать.
    2. На вкладке Файл выберите команду Печать. Также можно нажать клавиши CTRL+P.
    3. Нажмите кнопку «Печать» или настройте параметры перед нажатием кнопки «Печать».

    Печать одной или нескольких книг

    Все файлы книг, которые требуется распечатать, должны находиться в одной папке.

    1. Щелкните «Файл» >«Открыть». Можно также воспользоваться сочетанием клавиш CTRL+O.
    2. Удерживая нажатой кнопку CTRL, щелкните имена всех книг, которые нужно напечатать.
    3. Щелкните их правой кнопкой мыши и выберите «Печать».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *