макрос для печати всех файлов в той же папке, в которой находится файл с макросо

Автор OOKapitan, 24 апреля 2017, 13:33

0 Пользователи и 1 гость просматривают эту тему.

rami

Цитата: OOKapitan от 18 октября 2017, 11:15
Цитата: Rafik от 18 октября 2017, 08:41
Для ЛО
У меня ОО.
В Apache OpenOffice такие же настройки принтера (за исключением одного параметра) как и в LibreOffice. В том же меню"Файл".

alpold

Цитата: Bigor от 17 октября 2017, 15:34
По мне, так проще сделать нужный принтер по умолчанию  в системе.
НО если хочется что бы макрос выводил  печать на определенный принтер , то смотри приложенный файл. В  PrintName надо прописать имя нужного принтера (как он называется в системе)
а есть возможность выбор принтера сделать в ячейки с выпадающий списком где будут прописаны имена принтеров?

bigor

Цитата: alpold от 10 апреля 2019, 07:53а есть возможность выбор принтера сделать в ячейки с выпадающий списком где будут прописаны имена принтеров?
это как? на листе есть список принтеров, установленных на конкретной машине, вы при редактировании листа выбираете нужный принтер из списка и запускаете макрос?
тогда примерно так:
PrintName = ThisComponent.Sheets(номер листа со списком принтеров).getCellbyPosition(столбец ячейки со списком принтеров,строка ячейки со списком принтера).string


Есть еще вариант в сам макрос вписать диалог выбора принтера.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

alpold

Цитата: Bigor от 10 апреля 2019, 09:22
Цитата: alpold от 10 апреля 2019, 07:53а есть возможность выбор принтера сделать в ячейки с выпадающий списком где будут прописаны имена принтеров?
это как? на листе есть список принтеров, установленных на конкретной машине, вы при редактировании листа выбираете нужный принтер из списка и запускаете макрос?
тогда примерно так:
PrintName = ThisComponent.Sheets(номер листа со списком принтеров).getCellbyPosition(столбец ячейки со списком принтеров,строка ячейки со списком принтера).string
имена принтеров должны быть в кавычках.

Есть еще вариант в сам макрос вписать диалог выбора принтера.
Вот файл чтобы понятнее было про что я. Плюс нужно чтобы он автоматом ставил двухстороннюю печать. Это идеальный вариант бы был для меня например. А то выходит так , что работаю каждый день в разном кабинете...соответсвтенно принтер разный..в основном файле много информации которая постоянно меняется...и постоянно печатается одинаковый страниц но с другого листа, в котором формируется бланк ...потому приходится каждый раз заходить во второй лист жать там печать...проверять столит ли двухстоолнняя печать....было бы отлично если бы это можно было делать кнопкой с первого листа а второй вообще скрыть чтобы в нем никто ничего не сбил....а отдельные листы с этого бланка иногда нужно перепечатывать когда чтото закосячил...и опять же приходится считать какой лист запортачил и его отдельно заходить печатать

bigor

Не знаю, как сейчас, а лет 7 назад, рулить свойством печати позволяли не все сборки ООО/LOO. Умные люди предложили вариант
ЦитироватьУправление принтером - это уже почти ВНЕ самого ОО. Может быть создать макрос, который не будет менять никаких настроек, кроме выбора принтера (печатать не на принтере по умолчанию, а на особом принтере). А этот особый (может быть просто копия принтера по умолчанию) уже можно настроить как угодно в Панели управления\Принтеры и факсы
под это дело был написан макрос:
sub NewPrinter2to1

Dim oOpts(1) as New com.sun.star.beans.PropertyValue
Dim oDoc        'Документ для печати.
Dim oPrinter    'Массив свойств, которые определяют принтер.
Dim sPrinter$   'Имя принтера.

oDoc=ThisComponent
REM Установка имени принтера как известно системе.
sPrinter = "Print2to1" ' имя принтера в системе настроенного на печать 2 страницы на лист 

oPrinter = oDoc.getPrinter()
For i = LBound(oPrinter) to UBound(oPrinter)
  If oPrinter(i).Name = "Name" Then
    oPrinter(i).Value = sPrinter
  End If
Next i

oDoc.setPrinter(oPrinter)

oOpts(0).Name = "Name"
oOpts(0).Value = "<" & sPrinter & ">"
oOpts(1).Name = "Wait"
oOpts(1).Value = True
oDoc.Print(oOpts())
End Sub


Вам остается прописать принтер Print2to1 на всех машинах где вы печатаете, и в его свойствах установить двухстороннюю печать.
Если нужно печатать постоянно только второй лист, то после oOpts(1).Value = True вставить строчку ThisComponent.CurrentController.setActiveSheet(oDoc.Sheets(1)) , если листы хотите выбирать, то мудрите сами :)
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

alpold

Цитата: Bigor от 10 апреля 2019, 15:48
Не знаю, как сейчас, а лет 7 назад, рулить свойством печати позволяли не все сборки ООО/LOO. Умные люди предложили вариант
ЦитироватьУправление принтером - это уже почти ВНЕ самого ОО. Может быть создать макрос, который не будет менять никаких настроек, кроме выбора принтера (печатать не на принтере по умолчанию, а на особом принтере). А этот особый (может быть просто копия принтера по умолчанию) уже можно настроить как угодно в Панели управления\Принтеры и факсы
под это дело был написан макрос:
sub NewPrinter2to1

Dim oOpts(1) as New com.sun.star.beans.PropertyValue
Dim oDoc        'Документ для печати.
Dim oPrinter    'Массив свойств, которые определяют принтер.
Dim sPrinter$   'Имя принтера.

oDoc=ThisComponent
REM Установка имени принтера как известно системе.
sPrinter = "Print2to1" ' имя принтера в системе настроенного на печать 2 страницы на лист 

oPrinter = oDoc.getPrinter()
For i = LBound(oPrinter) to UBound(oPrinter)
  If oPrinter(i).Name = "Name" Then
    oPrinter(i).Value = sPrinter
  End If
Next i

oDoc.setPrinter(oPrinter)

oOpts(0).Name = "Name"
oOpts(0).Value = "<" & sPrinter & ">"
oOpts(1).Name = "Wait"
oOpts(1).Value = True
oDoc.Print(oOpts())
End Sub


Вам остается прописать принтер Print2to1 на всех машинах где вы печатаете, и в его свойствах установить двухстороннюю печать.
Если нужно печатать постоянно только второй лист, то после oOpts(1).Value = True вставить строчку ThisComponent.CurrentController.setActiveSheet(oDoc.Sheets(1)) , если листы хотите выбирать, то мудрите сами :)

замудрено очень. Я в макросах вообще чайник...Я врач..поэтому далек от этого...

bigor

Да с макросом все как раз просто. См. вложение.
Сложнее принтер прописать правильно.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

alpold

Цитата: Bigor от 10 апреля 2019, 17:28
Да с макросом все как раз просто. См. вложение.
Сложнее принтер прописать правильно.
не совсем пойму , что значит принтер прописать?Его какойто виртуальный надо сделать?

bigor

Цитата: alpold от 10 апреля 2019, 18:46что значит принтер прописать?Его какойто виртуальный надо сделать?
Ох, не могу я грамотно писать :( В общем не прописать, а установить еще один принтер с использованием драйвера существующего с именем Print2to1 :) См. картинки, там наверно понятнее :)

ps если у вас есть какой админ, то лучше пусть он этим займется :)
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

alpold

Цитата: Bigor от 11 апреля 2019, 09:20
Цитата: alpold от 10 апреля 2019, 18:46что значит принтер прописать?Его какойто виртуальный надо сделать?
Ох, не могу я грамотно писать :( В общем не прописать, а установить еще один принтер с использованием драйвера существующего с именем Print2to1 :) См. картинки, там наверно понятнее :)

ps если у вас есть какой админ, то лучше пусть он этим займется :)
Огромное спасибо))) проблема ток в том что на работе линукс)

bigor

:) Пишите уже какой, вечером посмотрю как в Линукс это сделать. Или напрягите своего админа
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

alpold

Цитата: Bigor от 11 апреля 2019, 14:27
:) Пишите уже какой, вечером посмотрю как в Линукс это сделать. Или напрягите своего админа
да не парься...подскажи более простой вариант....как с первого листа нажимать на копку созданную печать, но чтобы вылетало окно для печати скрытого листа? желательно с уже вбитым нужным мне диапазоном страниц?пофиг принтер выбрать 1 раз надо всего вначале работы.

bigor

смотри макрос в моем файле, там комментарий есть. Только там нет разбивки на нужные страницы, но rami показал как это сделать

ps нет, не получается передать в форму печати, данные о страницах. Надо думать :(
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Rafik

Цитата: alpold от 11 апреля 2019, 13:42проблема ток в том что на работе линукс)
Если на машине стоит убунту, то насчёт установки принтера с нужными настройками по умолчанию, можно обратиться на форум убунты. Обычно быстро отвечают, если у кого-то есть какие-то идеи или готовые решения.

bigor

Иногда полезно мануалы читать :) Посмотри этот файл как он у тебя отработает
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут