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

 

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

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

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

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

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



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

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

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


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


Сообщение отредактировал 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:=Тrue)With objWord.Selection.Find.Text = "PQ1".Find.Replacement.Text = "PQ" & m.Find.Execute Replace:=1; Forward:=Тrue; _Wrap:=wdFindContinue.Find.Text = "{PARAM1}"If .Find.Found = Тrue Then.Find.Replacement.Text = 22,Find.Execute Replace:=wdReplaceAll; Forward:=Тrue; _Wrap:=wdFindContinueEnd IfobjDoc98.PrintOutEnd WithEnd Sub
[/vba]

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

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

[vba]
Dim objWord As Object, objDoc98 As ObjectSet 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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Цитата Raven2009, 24.11.2019 в 11:59, в сообщении № 1 ( писал(а)):
что не могут отправить на другой принтер новое задание,
что под этим подразумевается? Ручной выбор или просто в момент печати идет рендеринг, не позволяющий работать Word.
Если печать идет из Word, то рендеринг для зебры сравнительно долгий, нужно переходить на ZPL, все ускорится в разы, в том числе и печать.


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

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

Excel 2013
Цитата bmv98rus, 24.11.2019 в 19:54, в сообщении № 4 ( писал(а)):
нужно переходить на ZPL, все ускорится в разы,


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

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

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


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

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

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

Автор - Raven2009
Дата добавления - 24.11.2019 в 21:14
bmv98rus Дата: Воскресенье, 24.11.2019, 22:36 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 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
Цитата bmv98rus, 24.11.2019 в 22:36, в сообщении № 6 ( писал(а)):
Не понятно зачем тогда Word, как промежуток.


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

Цитата bmv98rus, 24.11.2019 в 22:36, в сообщении № 6 ( писал(а)):
в приложении и есть уже ZPL, значит все с эти ок.


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

Цитата bmv98rus, 24.11.2019 в 22:36, в сообщении № 6 ( писал(а)):
Одно скажу точно, запускать еще одну копию приложения - не лучшее решение.


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

Цитата bmv98rus, 24.11.2019 в 22:36, в сообщении № 6 ( писал(а)):
Если все сводится к необходимой замене, то это можно делать простым VBS и им же отправлять на печать, разве что нужно понимать как подключены принтера и как осуществлять их выбор.


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


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

Цитата bmv98rus, 24.11.2019 в 22:36, в сообщении № 6 ( писал(а)):
в приложении и есть уже ZPL, значит все с эти ок.


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

Цитата bmv98rus, 24.11.2019 в 22:36, в сообщении № 6 ( писал(а)):
Одно скажу точно, запускать еще одну копию приложения - не лучшее решение.


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

Цитата bmv98rus, 24.11.2019 в 22:36, в сообщении № 6 ( писал(а)):
Если все сводится к необходимой замене, то это можно делать простым VBS и им же отправлять на печать, разве что нужно понимать как подключены принтера и как осуществлять их выбор.


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

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

Excel 2013/2016
Цитата Raven2009, 24.11.2019 в 23:23, в сообщении № 7 ( писал(а)):
о каком приложении здесь речь?


Цитата Raven2009, 24.11.2019 в 11:59, в сообщении № 1 ( писал(а)):
через Шелл вроде как можно сделать параллельные процессы сделать
это будет еще одна копия.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
Цитата Raven2009, 24.11.2019 в 23:23, в сообщении № 7 ( писал(а)):
о каком приложении здесь речь?


Цитата Raven2009, 24.11.2019 в 11:59, в сообщении № 1 ( писал(а)):
через Шелл вроде как можно сделать параллельные процессы сделать
это будет еще одна копия.

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

Excel 2013
Цитата bmv98rus, 24.11.2019 в 23:59, в сообщении № 6 ( писал(а)):
это будет еще одна копия.


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

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



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

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



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

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

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



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

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


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

[vba]
Set objDoc98 = objWord.Documents.Open("\\d\test.txt"; ReadOnly:=Тrue)
[/vba]

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

[vba]
Set objDoc1 = objWord.Documents.Open("\\d\test1.txt"; ReadOnly:=Тrue)
[/vba]

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

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

[vba]
Set objDoc2 = objWord.Documents.Open("\\d\test2.txt"; ReadOnly:=Тrue)
[/vba]

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

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

Автор - Raven2009
Дата добавления - 25.11.2019 в 00:18
bmv98rus Дата: Понедельник, 25.11.2019, 00:22 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 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
  • Страница 1 из 1
  • 1
Поиск:

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