26

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

alexii пишет:

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

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

ospts пишет:

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

До 10-ки программа 5 лет работала на Win7 и таких проблем не было. Так что дело всё-таки с 10-кой.
На скриншоте же видно, что за прога - Стек. Прога написана на Java, поэтому сначала запускается Java, которая запускает саму прогу. Это делается через батник.

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

start jre1.6.0_07\bin\javaw.exe -Xmx512m -jar JavaStackClient.jar

27

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

В общем, пока вы думали, я нашёл другое решение, которое более удовлетворительное, чем то временное, о котором я писал ранее.
Буду запускать Excel видимым (в этом случае он запускается от текущего пользователя), потом форма отправляется на печать и excel закрывается через секунду, это всё через макрос. Будет конечно мерцать excel, но зато будет виден сам процесс работы)

Так что спасибо, что пытались помочь мне!

28

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

ospts пишет:

До 10-ки программа 5 лет работала на Win7 и таких проблем не было. Так что дело всё-таки с 10-кой.

После — не значит вследствие.

Рассказываю: был один принтер, он же был принтером по умолчанию. Добавили другой/подключили сетевой. Назначили его умолчальным. Под той учётной записью, которая была активна в тот момент. У всех остальных учётных записей умолчальным остался прежний. Могут быть и другие сценарии, приводящие к указанной ситуации.

ospts пишет:

На скриншоте же видно, что за прога - Стек. Прога написана на Java, поэтому сначала запускается Java, которая запускает саму прогу.

На скриншоте виден исполняемый файл с именем stack.exe. javaw.exe не видно.

Ну, да ладно. Имя Вашего принтера знаете, нет? Откройте Вашу Рабочую книгу, добавьте код:

    Dim objSWbemObjectEx As Object
    Dim strOutput As String
    
    
    strOutput = "Default" & vbTab & "Printer Name" & vbCrLf & "-------------------------------------------" & vbCrLf
    
    For Each objSWbemObjectEx In CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").ExecQuery("SELECT * FROM Win32_Printer")
        strOutput = strOutput & objSWbemObjectEx.Default & vbTab & objSWbemObjectEx.Name & vbCrLf
    Next
    
    MsgBox strOutput

в Ваш макрос, сохраните книгу. Выполните программу. Посмотрите на появившееся сообщение вида:
https://i.imgur.com/huPbIPR.png
Скопируйте его содержимое посредством Ctrl-C. Вставьте сюда. Прокомментируйте — присутствует ли искомый принтер в списке, назначен ли именно он принтером по умолчанию?

29

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

ospts пишет:

Буду запускать Excel видимым (в этом случае он запускается от текущего пользователя),

Мы явно говорим на разных языках.

30

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

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

Буду запускать Excel видимым (в этом случае он запускается от текущего пользователя),

Мы явно говорим на разных языках.

А что вам непонятно?

alexii пишет:

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

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

31

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

ospts пишет:

А что вам непонятно?

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

ospts пишет:

Я уже проверял и знаю, что для этого пользователя стоит по умолчанию другой принтер.

Хорошо. Если знаете имя потребного принтера — вставьте в книгу следующий код:

    Dim objSWbemObjectEx As Object

    For Each objSWbemObjectEx In CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").ExecQuery("SELECT * FROM Win32_Printer")
        If StrComp(objSWbemObjectEx.Name, "Microsoft XPS Document Writer", vbTextCompare) = 0 And Not objSWbemObjectEx.Default Then
            objSWbemObjectEx.SetDefaultPrinter
        End If
    Next

где вместо «Microsoft XPS Document Writer» вставьте имя искомого принтера, и сделайте так, чтобы он выполнился под той учётной записью хотя бы один раз (затем можно удалить или оставить на будущее).

32

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

alexii пишет:

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

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

alexii пишет:

Если знаете имя потребного принтера — вставьте в книгу следующий код:

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

33

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

ospts пишет:

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

Я уже писал про «после — не значит вследствие». Точно так же и здесь: что пользователи разные, говорит лишь о том, что процесс приложения исполняется под разными учётными записями. Видимость/невидимость окна приложения тут не играет роли.

ospts пишет:

Ну если бы один пользователь печатал бы эти формы, но печатать может любой, кому поручат. А у нас их около 50 человек.

И каждый на своей машине, со своим умолчальным принтером — Вы это хотите сказать?

34 (изменено: alexii, 2018-08-17 17:05:08)

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

Если последнее предположение верное, и приложение запускается, как Вы писали, пакетным файлом, давайте попробуем заменить его, например, на скрипт, который будет получать имя принтера по умолчанию текущего пользователя, исполняющего скрипт, где-нибудь его сохранять, а код в Рабочей книге, открытой в Microsoft Excel, исполняющейся уже в контексте другого пользователя, будет пытаться устанавливать тот же принтер по умолчанию, что и у вызвавшего скрипт пользователя.

Что скажете? Если готовы — для начала проверьте у себя работоспособность этого кода. А то, ежели мои предположения не верны, то и затеваться не стоит.