Ответ на пост «Нужен макрос для массовой печати документов из Word 2010 по порядку»
Итак, получилось сделать скрипт на PowerShell для массовой печати файлов.
Сразу отвечу комментаторам, задававшим вопросы по типу: "Зачем это надо?"
Я работаю в госучреждении, мы печатаем уйму документов по различным вопросам (Да, эта бумажная волокита в 21 веке напрягает, но не во всех сферах у нас введен электронный документооборот) В одной папке может быть до 500 штук документов по типу: Заявление1, Расшифровка1, Заявление2, Расшифровка2 и так далее. Если попробовать печатать через контекстное меню Проводника, то:
1. Они печатаются вперемешку. И потом нужно к каждому заявлению найти расшифровку. Когда у тебя 500 документов, это просто адский геморрой. А запускать печать по одному файлу тоже влечет за собой затраты времени
2. Максимальное ограничение при печати из контекстного меню - 15 файлов (да, я знаю, что можно отредактировать значение в реестре, но см. пункт 1).
3. В организации запрещены сторонние программы, поэтому PrintConductor не получится установить, к великому сожалению. Насчет гугла и всего прочего немного непонятно, так как тут не все программисты и даже простой скрипт PowerShell у меня вызвал определенные трудности, но в итоге все получилось. Иногда задачу нужно решить как можно быстрее и нет времени учиться писать макросы, скрипты и все прочее и изучать профильные сайты. Но было интересно, хоть и с примерами, но пробовать что-то новое. В общем, вот скрипт:
Add-Type -AssemblyName System.Windows.Forms | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.InitialDirectory = "C:\"
$OpenFileDialog.Multiselect = $True
$OpenFileDialog.Filter = "Все файлы (*.*)|*.*"
$OpenFileDialog.ShowHelp = $true
$OpenFileDialog.ShowDialog() | Out-Null
$FilesToPrint = $OpenFileDialog.FileNames | Sort-Object
If (!($FilesToPrint)) {
Break
}
ForEach ($FullFileName in $FilesToPrint) {
Write-Output "Печать файла `"$FullFileName`""
Start-Process -FilePath $FullFileName -Verb Print -Wait
}
1. Сохраняем его в текстовый файл, меняем расширение у текстового файла на .ps1 и пробуем запустить.
2. Скорее всего он не запустится из-за ограничений в Windows, связанных с запуском скрипта.
Для решения создаем ярлык на файл скрипта и в Свойствах ярлыка в Поле Объект пишем:
powershell -ExecutionPolicy Bypass -file "Путь до скрипта.ps1"
3. После этого кликаем по ярлыку и скрипт запросит папку для печати.
4. Открываем папку, выделяем нужные файлы (у меня .rtf и .docx) и отправляем на печать.
5. Скрипт печатает их в алфавитном порядке.
Спасибо всем за идею и наводки на решение! Надеюсь, кому-нибудь данный скрипт будет полезен.