1

Тема: "Тихая" печать их MS Excel

Доброго всем времени суток.
В общем вопрос вот в чём. Я запускаю книгу Excel из под сторонней программы. При этом Excel на экран не выводится. Запускается макрос, который отправляет на печать форму с заполненными данными, то есть просто делает "тихую" печать. Но вот загвоздка в том, что печать идёт не на принтер по умолчанию, а на какой-то другой в системе. Раньше на другой ОС (Windows 7) всё отлично работало, а теперь, когда у меня новый компьютер с установленной на нём Windows 10, происходит это недоразумение.
Подскажите, может кто-то с сталкивался с подобной проблемой или может знает, как её победить.
Заранее спасибо.

Прилагаю текст макроса, хотя я что-то уверен, что дело не в нём, потому что, если открыть файл через Excel, и выполнить макрос, печать идёт на принтер по умолчанию.

+ открыть спойлер

Sub Макрос()
Worksheets("Данные").Range("I2:N2").Copy
Worksheets("Шаблон").Range("J2:O2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("J53:O53").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Данные").Range("I3:M3").Copy
Worksheets("Шаблон").Range("R2:V2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("R53:V53").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Данные").Range("I4:AR4").Copy
Worksheets("Шаблон").Range("M11:AV11").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("M62:AV62").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Данные").Range("I5:AR5").Copy
Worksheets("Шаблон").Range("M12:AV12").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("M63:AV63").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Данные").Range("I6:AR6").Copy
Worksheets("Шаблон").Range("M13:AV13").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("M64:AV64").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Данные").Range("I8:K8").Copy
Worksheets("Шаблон").Range("S20:U20").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("S71:U70").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Данные").Range("I9:J9").Copy
Worksheets("Шаблон").Range("V20:W20").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("V71:W71").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Данные").Range("I12:AS12").Copy
Worksheets("Шаблон").Range("K28:AU28").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("K79:AU79").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Данные").Range("I10:N10").Copy
Worksheets("Шаблон").Range("I36:N36").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("I87:N87").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Данные").Range("I7:AA7").Copy
Worksheets("Шаблон").Range("AC45:AU45").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("AC96:AU96").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Данные").Range("I15:AR15").Copy
Worksheets("Шаблон").Range("M10:AV10").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("M61:AV61").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Данные").Range("I17:AH17").Copy
Worksheets("Шаблон").Range("W15:AV15").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("W66:AV66").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Данные").Range("U10:AA10").Copy
Worksheets("Шаблон").Range("X20:AD20").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("X71:AD71").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Данные").Range("I11:K11").Copy
Worksheets("Шаблон").Range("AM20:AO20").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Шаблон").Range("AM71:AO71").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("Шаблон").Select
Rows("1:101").Select
Selection.Copy
Sheets("Результат").Select
Rows("1:1").Select
Selection.Insert Shift:=xlDown
Sheets("Результат").PrintOut Copies:=1, Collate:=True
Application.DisplayAlerts = False
Application.Quit
End Sub

2 (изменено: red2881, 2018-08-14 12:24:16)

Re: "Тихая" печать их MS Excel

Проверь: Параметры Устройства -> Принтеры и сканеры и отключите опцию «Разрешить Windows управлять принтером по умолчанию».

+ открыть спойлер

https://www.white-windows.ru/wp-content/uploads/2016/11/4759191_5.png

3 (изменено: ospts, 2018-08-14 12:33:16)

Re: "Тихая" печать их MS Excel

red2881, там всё отключено, я сразу тоже на это подумал, ан нет.

4 (изменено: red2881, 2018-08-14 13:03:04)

Re: "Тихая" печать их MS Excel

Sub Принтер()
    a = Application.ActivePrinter
End Sub

https://d.radikal.ru/d04/1808/c2/b0b8c1c2054d.jpg

Еще посмотри https://www.excel-vba.ru/chto-umeet-exc … lya-excel/

5

Re: "Тихая" печать их MS Excel

red2881, я так и сделал, как появилась проблема, забил на трёх сотрудников их принтеры по умолчанию но у нас все сотрудники могут печатать, а это где-то около 50. К тому же принтеры по-умолчанию могут меняться, то сломаются или ещё что. За всем этим уследить просто нереально. Так что нужно искать корень проблемы...

6

Re: "Тихая" печать их MS Excel

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

7

Re: "Тихая" печать их MS Excel

red2881, но на старом компе с Win7 нормально же работало. Я вот грешу на то, что Win10 с Excel конфликтуют как-то...

8

Re: "Тихая" печать их MS Excel

После запуска макроса принтер по умолчанию меняется на новый в настройках?

9

Re: "Тихая" печать их MS Excel

red2881, в том-то и дело, что не меняется

10 (изменено: red2881, 2018-08-14 15:45:51)

Re: "Тихая" печать их MS Excel

т.е так не работает?

Sub Принтер()
    a = Application.ActivePrinter
тут часть Вашего кода
     Application.ActivePrinter = a
отправка на печать
End Sub

11

Re: "Тихая" печать их MS Excel

red2881 пишет:

т.е так не работает?

Sub Принтер()
    a = Application.ActivePrinter
тут часть Вашего кода
     Application.ActivePrinter = a
отправка на печать
End Sub

Да, не работает. Отправляет на другой принтер.

12

Re: "Тихая" печать их MS Excel

ospts пишет:

Я запускаю книгу Excel из под сторонней программы.

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

red2881 пишет:

т.е так не работает?

Разве этот код что-то меняет? У него изначально не тот активный принтер. Так что нужна ещё одна строка — которая задаёт потребный активный принтер перед печатью.

13

Re: "Тихая" печать их MS Excel

alexii пишет:

Разве этот код что-то меняет?

Да кто же его знает.

Как вариант взять значение принтера по умолчанию из реестра.

14

Re: "Тихая" печать их MS Excel

Не поняли Вы меня. Не нужно ничего рать из реестра».  Принтер по умолчанию известен, его просто нужно задать при:

ospts пишет:

Я запускаю книгу Excel из под сторонней программы. При этом Excel на экран не выводится. Запускается макрос, который отправляет на печать форму с заполненными данными,

Ибо, как я понимаю, в этом случае принтером по умолчанию является иной принтер (который и будет Application.ActivePrinter, посему я и пишу, что толку от такого кода не будет). А вот посмотреть тем же кодом Application.ActivePrinter, какой принтер является умолчальным в этот момент, стоило бы.

15

Re: "Тихая" печать их MS Excel

alexii пишет:

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

Программа запускается из под своей учётки. Нет ничего не требует.
Кстати, я покопался в реестре и нашёл, что для этого пользователя не меняется оперативно принтер по умолчанию, т.е. когда я меняю его из под своей учётки, у которой права админа, на той учётке не изменяется сразу, только спустя время. Не знаю даже каким таким образом это происходит...
Хотя читал я в инете, что если меняется принтер из под учётки с правами админа, то принтер меняется для всех. Вот на 7-ке видимо так и было, но на 10-ке что-то не так...

16

Re: "Тихая" печать их MS Excel

alexii пишет:

А вот посмотреть тем же кодом Application.ActivePrinter, какой принтер является умолчальным в этот момент, стоило бы.

Я смотрел, там не тот стоит, а который я нашёл в реестре для той учётки.

17

Re: "Тихая" печать их MS Excel

ospts пишет:

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

Я даже не очень понимаю, как Вы это делаете. Ибо для каждой учётной записи свой умолчальный принтер.

ospts пишет:

Программа запускается из под своей учётки.

Вот и ответ. Войдите интерактивно под той учётной записью, поменяйте принтер по умолчанию. Откройте искомую рабочую книгу «ручками», проверьте, какой принтер задан для печати в настройках. Если не тот — поменяйте и там.

18 (изменено: ospts, 2018-08-16 13:17:36)

Re: "Тихая" печать их MS Excel

alexii пишет:

Вот и ответ. Войдите интерактивно под той учётной записью, поменяйте принтер по умолчанию. Откройте искомую рабочую книгу «ручками», проверьте, какой принтер задан для печати в настройках. Если не тот — поменяйте и там.

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

19

Re: "Тихая" печать их MS Excel

ospts пишет:

Она запоролена.

И что?

ospts пишет:

Вы предлагаете в книге установить по умолчанию конкретный принтер?

Предлагаю проверить принтер по умолчанию под указанной учётной записью. Затем предлагаю открыть книгу и проверить принтер ручками. Программно устанавливать — пока нет, это последнее средство.

20

Re: "Тихая" печать их MS Excel

alexii пишет:

И что?

Я не могу интерактивно на неё зайти.

alexii пишет:

Предлагаю проверить принтер по умолчанию под указанной учётной записью. Затем предлагаю открыть книгу и проверить принтер ручками. Программно устанавливать — пока нет, это последнее средство.

А как это сделать, подскажите

21 (изменено: alexii, 2018-08-17 09:59:15)

Re: "Тихая" печать их MS Excel

ospts пишет:

Я не могу интерактивно на неё зайти.

Почему не можете — для неё отключён интерактивный вход? Можете временно включить. Не знаете пароль? Но как-то же Вы ту стороннюю программу запускаете от имени этой учётной записи, не так ли?

ospts пишет:

А как это сделать, подскажите

Для начала нужно как раз войти под той учётной записью и глазками посмотреть в Панели управления, какой принтер задан умолчальным для этой учётной записи. Если — «никак, совсем никак» — я буду смотреть, можно ли получить сие программным способом.

22

Re: "Тихая" печать их MS Excel

alexii пишет:

Почему не можете — для неё отключён интерактивный вход? Можете временно включить. Не знаете пароль? Но как-то же Вы ту стороннюю программу запускаете от имени этой учётной записи, не так ли?

Вот именно, что не знаю. Программа при установке сама создаёт пользователя,видимо вместе с паролем, и при запуске она не требует пароль. Возможно она сама как-то его ставит... не знаю.

23

Re: "Тихая" печать их MS Excel

ospts пишет:

и при запуске она не требует пароль.

Тогда давайте описывайте — что за приложение, её версию, как именно Вы осуществляете её запуск на исполнение. Покажите скриншот Process Explorer'а со включённым столбцом «User Name», на котором будут видны имена текущего пользователя и пользователя, от имени которого исполняется приложение (можете попробовать сделать скриншот в момент печати, чтобы был виден и excel.exe).

24

Re: "Тихая" печать их MS Excel

alexii пишет:
ospts пишет:

и при запуске она не требует пароль.

Тогда давайте описывайте — что за приложение, её версию, как именно Вы осуществляете её запуск на исполнение. Покажите скриншот Process Explorer'а со включённым столбцом «User Name», на котором будут видны имена текущего пользователя и пользователя, от имени которого исполняется приложение (можете попробовать сделать скриншот в момент печати, чтобы был виден и excel.exe).

https://pastenow.ru/43e1379d72e77f8af9126a793480369d
Вот. Только я что-то сомневаюсь, что это поможет решить проблему. Дело же не в приложении, а скорее в Win10

25 (изменено: alexii, 2018-08-17 11:55:47)

Re: "Тихая" печать их MS Excel

Я пока не вижу ничего, что было бы связано с версией ОС. Аналогичная ситуация может быть на любой ОС, начиная с Windows NT.

Вы не показали и не ответили на:

ospts пишет:

что за приложение, её версию, как именно Вы осуществляете её запуск на исполнение.