2013-03-05 1 views
1

Я был вызван сегодня утром, чтобы работать над инструментом, который я создал в Excel некоторое время назад. Инструмент создает отчет, а затем печатает его в формате pdf. Проблема, с которой они меня вызвали, заключалась в том, что для одного пользователя интервал между строками в PDF был отключен. Мне потребовалось некоторое время, чтобы выяснить причину проблемы. Это был ДОИ. Пользователь, у которого возникли проблемы с просмотром шрифта, увеличил шрифт Windows до 150% и по какой-то причине приводит к тому, что excel экспортирует в pdf по-разному.Печать в формате PDF отличается от Excel в зависимости от пользовательского DPI

Я знаю, в чем проблема, но прошу пользователя изменить DPI (заставить пользователя выйти из системы), зайти в систему, открыть excel и запустить мой макрос и, наконец, изменить DPI, это не разумное решение. Я надеюсь, что там есть гуру, который сможет помочь мне найти решение. Я не против добавления кода VBA для временного изменения DPI во время работы программы, но я не уверен, как это сделать или если это возможно.

Благодаря

Для получения дополнительных разъяснений его окна 7 и аспект я говорю, если вы идете, чтобы изменить разрешение есть связь с просьбой, если вы хотите «Сделать текст и другие элементы больше или меньше» , Ползунок был изменен с 100% по умолчанию на 150%.

ответ

1

Я не могу придумать простой способ преодолеть эту проблему. Что-то, что вы могли бы попробовать, это создать приложение OLE (например, на C#, VB.NET или C++), которое использует Excel только для того, чтобы открыть файл и экспортировать его в PDF. Затем вы можете создать нового пользователя в системе и обедать этим приложением из командного файла, используя команду runas. Вернитесь в Excel снова, вы можете обедать командный файл с помощью команды Shell.
Рабочий процесс будет следующим:

1- Используя функцию VBA и Shell, вызовите командный файл из Excel с текущим файлом в качестве параметра.
2- Командный файл вызывает пользовательское приложение MyAppExportToPDF с использованием runas и передает текущий файл Excel в качестве параметра.
3- MyAppExportToPDF открывает новый экземпляр Excel с использованием OLE, загружает файл и экспортирует его в PDF.

Поскольку MyAppExportToPDF будет работать у другого пользователя, новый экземпляр Excel также должен запускаться под этим пользователем. Настройки DPI под этим пользователем должны быть теми, которые вам нужны.

Отказ от ответственности: Это просто непроверенная идея.

+0

Ваш метод будет работать из того, что я могу видеть, но я не смог его реализовать, потому что мой пользователь не хотел ничего кроме excel файла (файл отправляется туда и обратно между несколькими пользователями, и они не хотят отправлять несколько файлы). Я пытался убедить их в другом, но кажется, что либо я исправляю его в excel, либо он должен быть признанным ошибкой. – Tolure