Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/ОДновременная печать текстовых файлов на разные принтеры - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » ОДновременная печать текстовых файлов на разные принтеры (Макросы/Sub)
ОДновременная печать текстовых файлов на разные принтеры
Raven2009 Дата: Воскресенье, 24.11.2019, 11:59 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 151
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день.

Есть код, который открывает текстовые файлы через ворд (так нужно коллегам), ищет в них пару значений, заменяет их на другие и печатает

[vba]
Код
Public Sub Print98()

Set FSO = CreateObject("Scripting.FileSystemObject")
Set objWord = CreateObject("Word.Application")

Set objDoc98 = objWord.Documents.Open("\\d\test.txt", ReadOnly:=True)

With objWord.Selection
.Find.Text = "PQ1"
.Find.Replacement.Text = "PQ" & m
.Find.Execute Replace:=1, Forward:=True, _
Wrap:=wdFindContinue

.Find.Text = "{PARAM1}"
If .Find.Found = True Then
.Find.Replacement.Text = 22
.Find.Execute Replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End If
objDoc98.PrintOut
End With
End Sub
[/vba]

Работает вроде бы хорошо, но мои коллеги жалуются, что не могут отправить на другой принтер новое задание, пока предыдущее полностью не отпечатается (порядка 10 принтеров zebra в подчинении - печатают этикетки). Но ждать некогда, нарушается производительность....(((

Узнал, что через Шелл вроде как можно сделать параллельные процессы сделать, вот только, как тогда мне организовывать корректировку значений в открываемых файлах перед печатью?

[vba]
Код
Dim objWord As Object, objDoc98 As Object

Set FSO = CreateObject("Scripting.FileSystemObject")
shell "word.exe \\d\file1.txt"
Set objDoc1 = getObject(, "Word.Application")

objDoc1.PrintOut
[/vba]
Ну и дальше мне закрывать их кодом как-то понадобится... Подскажите пожалуйста, как такое можно организовать?


Сообщение отредактировал Raven2009 - Воскресенье, 24.11.2019, 12:13
 
Ответить
СообщениеДобрый день.

Есть код, который открывает текстовые файлы через ворд (так нужно коллегам), ищет в них пару значений, заменяет их на другие и печатает

[vba]
Код
Public Sub Print98()

Set FSO = CreateObject("Scripting.FileSystemObject")
Set objWord = CreateObject("Word.Application")

Set objDoc98 = objWord.Documents.Open("\\d\test.txt", ReadOnly:=True)

With objWord.Selection
.Find.Text = "PQ1"
.Find.Replacement.Text = "PQ" & m
.Find.Execute Replace:=1, Forward:=True, _
Wrap:=wdFindContinue

.Find.Text = "{PARAM1}"
If .Find.Found = True Then
.Find.Replacement.Text = 22
.Find.Execute Replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End If
objDoc98.PrintOut
End With
End Sub
[/vba]

Работает вроде бы хорошо, но мои коллеги жалуются, что не могут отправить на другой принтер новое задание, пока предыдущее полностью не отпечатается (порядка 10 принтеров zebra в подчинении - печатают этикетки). Но ждать некогда, нарушается производительность....(((

Узнал, что через Шелл вроде как можно сделать параллельные процессы сделать, вот только, как тогда мне организовывать корректировку значений в открываемых файлах перед печатью?

[vba]
Код
Dim objWord As Object, objDoc98 As Object

Set FSO = CreateObject("Scripting.FileSystemObject")
shell "word.exe \\d\file1.txt"
Set objDoc1 = getObject(, "Word.Application")

objDoc1.PrintOut
[/vba]
Ну и дальше мне закрывать их кодом как-то понадобится... Подскажите пожалуйста, как такое можно организовать?

Автор - Raven2009
Дата добавления - 24.11.2019 в 11:59
bmv98rus Дата: Воскресенье, 24.11.2019, 19:54 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
что не могут отправить на другой принтер новое задание,
что под этим подразумевается? Ручной выбор или просто в момент печати идет рендеринг, не позволяющий работать Word.
Если печать идет из Word, то рендеринг для зебры сравнительно долгий, нужно переходить на ZPL, все ускорится в разы, в том числе и печать.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
что не могут отправить на другой принтер новое задание,
что под этим подразумевается? Ручной выбор или просто в момент печати идет рендеринг, не позволяющий работать Word.
Если печать идет из Word, то рендеринг для зебры сравнительно долгий, нужно переходить на ZPL, все ускорится в разы, в том числе и печать.

Автор - bmv98rus
Дата добавления - 24.11.2019 в 19:54
Raven2009 Дата: Воскресенье, 24.11.2019, 21:14 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 151
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
нужно переходить на ZPL, все ускорится в разы,


Я не против этого, но есть куча текстовых файлов, с которыми работают вручную и направляют напрямую на печать)
Я не пользовался ZPL, может подскажете по одному из примеров текстового файла?:

-по причинам периодических смещений бумаги после ее новой установки на принтер, например перед печатью нужно выравнивать расположение текста через изменения числовых значений после слов LT (выравнивание по высоте) и LS (выравнивание по ширине)
-есть слово в тексте {PARAM}, которое тоже ручками пользователь меняет на срок годности (месяц/год)
- в конце текста числовое значение после PQ пользователь ручками меняет на нужное ему - это количество страниц

ZPL поможет в выполнении этих условий? Если да, то это ПО в свободном доступе?
К сообщению приложен файл: text3.rar (5.3 Kb)
 
Ответить
Сообщение
нужно переходить на ZPL, все ускорится в разы,


Я не против этого, но есть куча текстовых файлов, с которыми работают вручную и направляют напрямую на печать)
Я не пользовался ZPL, может подскажете по одному из примеров текстового файла?:

-по причинам периодических смещений бумаги после ее новой установки на принтер, например перед печатью нужно выравнивать расположение текста через изменения числовых значений после слов LT (выравнивание по высоте) и LS (выравнивание по ширине)
-есть слово в тексте {PARAM}, которое тоже ручками пользователь меняет на срок годности (месяц/год)
- в конце текста числовое значение после PQ пользователь ручками меняет на нужное ему - это количество страниц

ZPL поможет в выполнении этих условий? Если да, то это ПО в свободном доступе?

Автор - Raven2009
Дата добавления - 24.11.2019 в 21:14
bmv98rus Дата: Воскресенье, 24.11.2019, 22:36 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Raven2009, в приложении и есть уже ZPL, значит все с эти ок. Не понятно зачем тогда Word, как промежуток.
Если все сводится к необходимой замене, то это можно делать простым VBS и им же отправлять на печать, разве что нужно понимать как подключены принтера и как осуществлять их выбор.
Одно скажу точно, запускать еще одну копию приложения - не лучшее решение.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеRaven2009, в приложении и есть уже ZPL, значит все с эти ок. Не понятно зачем тогда Word, как промежуток.
Если все сводится к необходимой замене, то это можно делать простым VBS и им же отправлять на печать, разве что нужно понимать как подключены принтера и как осуществлять их выбор.
Одно скажу точно, запускать еще одну копию приложения - не лучшее решение.

Автор - bmv98rus
Дата добавления - 24.11.2019 в 22:36
Raven2009 Дата: Воскресенье, 24.11.2019, 23:23 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 151
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Не понятно зачем тогда Word, как промежуток.


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

в приложении и есть уже ZPL, значит все с эти ок.


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

Одно скажу точно, запускать еще одну копию приложения - не лучшее решение.


о каком приложении здесь речь?

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


Мы вернулись к моему вопросу по VBA в этой теме? У принтеров тут своеобразное подключение. Что я понял, нельзя сделать принтер зебра активным на момент печати, все пойдет на печать на принтер по умолчанию. Поэтому нашел способ временно делать принтер зебра, на который хочу сделать распечатку, принтером по умолчанию, распечатывать, а потом возвращать обратно старый принтер. Если это конечно поможет в решении вопроса...
 
Ответить
Сообщение
Не понятно зачем тогда Word, как промежуток.


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

в приложении и есть уже ZPL, значит все с эти ок.


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

Одно скажу точно, запускать еще одну копию приложения - не лучшее решение.


о каком приложении здесь речь?

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


Мы вернулись к моему вопросу по VBA в этой теме? У принтеров тут своеобразное подключение. Что я понял, нельзя сделать принтер зебра активным на момент печати, все пойдет на печать на принтер по умолчанию. Поэтому нашел способ временно делать принтер зебра, на который хочу сделать распечатку, принтером по умолчанию, распечатывать, а потом возвращать обратно старый принтер. Если это конечно поможет в решении вопроса...

Автор - Raven2009
Дата добавления - 24.11.2019 в 23:23
bmv98rus Дата: Воскресенье, 24.11.2019, 23:59 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
о каком приложении здесь речь?


через Шелл вроде как можно сделать параллельные процессы сделать
это будет еще одна копия.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
о каком приложении здесь речь?


через Шелл вроде как можно сделать параллельные процессы сделать
это будет еще одна копия.

Автор - bmv98rus
Дата добавления - 24.11.2019 в 23:59
Raven2009 Дата: Понедельник, 25.11.2019, 00:18 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 151
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
это будет еще одна копия.


хорошо, тогда может, привязывать каждому открываемому объекту новую переменную, чтобы на печать они шли независимо? Вот здесь в моем вопросе например только 1 переменная, на которую пишется открываемый файл и потом этот объект печатается

[vba]
Код
Set objDoc98 = objWord.Documents.Open("\\d\test.txt", ReadOnly:=True)
[/vba]

Например если первый открываемый файл вешается на objDoc1

[vba]
Код
Set objDoc1 = objWord.Documents.Open("\\d\test1.txt", ReadOnly:=True)
[/vba]

пока печатается этот объект на одном принтере...

...второй открываемый файл вешается на objDoc2

[vba]
Код
Set objDoc2 = objWord.Documents.Open("\\d\test2.txt", ReadOnly:=True)
[/vba]

...и печатается на другой принтер

Возможно такое? Как правильно код мне написать если цикл для присвоения таких переменных нужен ObjDoc(i)?
Корректировки внутри открываемых файлов тоже нужны будут...
 
Ответить
Сообщение
это будет еще одна копия.


хорошо, тогда может, привязывать каждому открываемому объекту новую переменную, чтобы на печать они шли независимо? Вот здесь в моем вопросе например только 1 переменная, на которую пишется открываемый файл и потом этот объект печатается

[vba]
Код
Set objDoc98 = objWord.Documents.Open("\\d\test.txt", ReadOnly:=True)
[/vba]

Например если первый открываемый файл вешается на objDoc1

[vba]
Код
Set objDoc1 = objWord.Documents.Open("\\d\test1.txt", ReadOnly:=True)
[/vba]

пока печатается этот объект на одном принтере...

...второй открываемый файл вешается на objDoc2

[vba]
Код
Set objDoc2 = objWord.Documents.Open("\\d\test2.txt", ReadOnly:=True)
[/vba]

...и печатается на другой принтер

Возможно такое? Как правильно код мне написать если цикл для присвоения таких переменных нужен ObjDoc(i)?
Корректировки внутри открываемых файлов тоже нужны будут...

Автор - Raven2009
Дата добавления - 25.11.2019 в 00:18
bmv98rus Дата: Понедельник, 25.11.2019, 00:22 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Странно, что печать тормозит, по идее в спулер должно все улететь, в очередь и можно продолжать работать. Открытие второго файла не вылечит если приложение занято печатью. Зебра какая? Я посмотрю завтра.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеСтранно, что печать тормозит, по идее в спулер должно все улететь, в очередь и можно продолжать работать. Открытие второго файла не вылечит если приложение занято печатью. Зебра какая? Я посмотрю завтра.

Автор - bmv98rus
Дата добавления - 25.11.2019 в 00:22
Raven2009 Дата: Понедельник, 25.11.2019, 17:46 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 151
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Зебр 2 вида: 110XI 3 Plus, 110XI 4
 
Ответить
СообщениеЗебр 2 вида: 110XI 3 Plus, 110XI 4

Автор - Raven2009
Дата добавления - 25.11.2019 в 17:46
Мир MS Excel » Вопросы и решения » Вопросы по VBA » ОДновременная печать текстовых файлов на разные принтеры (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!