2014-12-02 3 views
0

У меня есть код LotusScript, работающий в IBM Domino 9.0 на 64-разрядном сервере Windows 2012 R2, который использует COM для запуска Microsoft Excel 2010, откройте книгу, затем распечатайте через PDFCreator (из PDFForge), чтобы преобразовать книгу в PDF.
IBM Domino работает как служба под пользователем SYSTEM, поэтому Excel и PDFCreator также запускаются под этим пользователем при запуске моего кода.«Принтеры не установлены» печать из Excel через COM

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

Один из админов для клиента переустановил Excel и PDFCreator, а также удалил профиль пользователя Windows (хотя я не знаю, для какого пользователя). Теперь PDFCreator запускается нормально, но было несколько проблем с Excel.

Я исправлены некоторые проблемы Excel с изменениями в мой код и в файловой системы ОС, но проблема теперь, когда мой код говорит Excel для печати книги, эта ошибка: только

Microsoft Excel: No printers are installed. To install a printer click the File tab, and then click Print. 
Click No Printers Installed, and then click Add Printer. Follow the instructions in the Add Printer dialog box.

Эта ошибка возникает при попытке распечатать мой код.
Я могу запустить Excel в качестве администратора и печатать вручную, с тремя принтерами (включая PDFCreator), доступными в диалоговом окне «Печать».

Мне кажется, что принтеры просто не видны пользователю SYSTEM, но я не знаю, как это проверить или исправить.
Что я могу сделать?

Последовательность нескольких бит кода. Я сократил некоторые ошибки обработки и другие вещи для краткости.

Следующий код начинается PDFCreator:

Set pdfCreator=CreateObject("PDFCreator.clsPDFCreator") 
If pdfCreator.cStart("/ClearCache /NoProcessingAtStartup") Then 
    pdfCreator.cClearCache 
    pdfCreator.cOption("PrinterTemppath")=pdfTmpDir 
    pdfCreator.cOption("UseAutosave")=1 
    pdfCreator.cOption("UseAutosaveDirectory")=1 
    pdfCreator.cOption("AutosaveDirectory")=pdfTmpDir 
    pdfCreator.cOption("AutosaveFormat")=0 
    pdfCreator.cSaveOptions 
    pdfCreator.cDefaultPrinter="PDFCreator" 
End If

pdfTmpDir переменная строка, содержащая путь к каталогу, установить в других местах в коде.

Эти строки начинаются Excel:

Set xlApp=CreateObject("Excel.Application") 
xlApp.Visible=False

Эти строки открыть существующую книгу и распечатать его.

Set xlBook=xlApp.Workbooks.Open(ceBCMSheet) 
xlBook.PrintOut ,,1,False,"PDFCreator"

ceBCMSheet переменная строка, содержащая полный путь к файлу XLS, установить в другом месте в коде.

ответ

0

Я смог исправить это, отредактировав реестр на сервере Windows.

Я нашел принтеры, перечисленные для пользователя с правами администратора в разделе "Устройства" и "PrinterPorts" детей этого раздела реестра:
HKEY_USERS \ S-1-5-19 \ Software \ Microsoft \ Windows NT \ CurrentVersion

Я скопировал эти ключи пользователю «.DEFAULT», и теперь мой код работает без ошибок.

Смежные вопросы