Вопрос:
Я пытаюсь распечатать таблицу Excel с помощью VB.NET, но я получаю сообщение об ошибке
Не удалось установить свойство PaperSize класса PageSetup
Вот мой код,
Dim oldCI As System.Globalization.CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo(«en-US») With application .AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable .Visible = False .EnableEvents = False .DisplayAlerts = False .ScreenUpdating = False End With Dim workbook As Excel.Workbook Dim worksheet As Excel.Worksheet ‘Open as readonly and do not update links workbook = application.Workbooks.Open(_fileName, 2, True) For Each worksheet In workbook.Worksheets worksheet.PageSetup.PaperSize = _paperSize Next workbook.PrintOutEx() workbook.Close(False) application.Quit() System.Threading.Thread.CurrentThread.CurrentCulture = oldCI worksheet = Nothing application = Nothing
Этот код работает на моей машине разработки, как только я развертываю на тестовый сервер, код выходит из строя. На сервере уже установлен драйвер принтера по умолчанию.
Ответ №1
Вам необходимо установить драйверы принтера. Класс PageSetup Excel должен взаимодействовать с драйверами принтера
У меня аналогичная проблема, связанная с кодом на Windows 8, работающем под Mac Parallels (виртуальная машина). Для тех, кто занимается развертыванием Visual Studio на Mac Parallels, вот что я делаю:
- Отключить использование принтеров между Mac и Windows. Перейдите в Parallels (VM)> “Настроить”> “Оборудование” и нажмите “Печать”. Снимите флажок “Добавить все принтеры Mac” и “Синхронизировать принтер по умолчанию”
- Установка драйвера принтера в Windows
- Чтобы получить назначенный IP-адрес одним и тем же беспроводным маршрутизатором (если вам нужно подключиться к принтеру по беспроводной сети), вам необходимо настроить сетевые соединения как мосты. Перейдите в Parallels (VM)> “Настроить”> “Оборудование”> “Сеть 1” и выберите “Тип сети” как “Аэропорт” и “DHCP-сервер” как “Авто”
Ответ №2
Вы можете использовать автоматизацию офиса, чтобы изменить размер страницы примерно так:
worksheet.PageSetup.PaperSize = WdPaperSize.wdPaperLetter
или выберите любой другой тип бумаги из раскрывающегося списка “WdPaperSize”.
надеюсь, это поможет вам немного.
Ответ №3
Основная проблема заключается в константе _paperSize. В моем случае это давало ту же ошибку: (простите С#)
worksheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperLedger;
в зависимости от принтера, например, бумага формата “книга” может быть определена как 11×17 или Tabloid. Узнайте, что драйвер печати ссылается на размер страницы, а затем
НЕ РАБОТАЕТ:
excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperLedger excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaper11x17
РАБОТАЛ:
excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperTabloid
Надеюсь, это поможет любому, у кого есть проблемы с смешными несоответствиями перечислений Microsoft Excel.
Ответ №4
Подтверждение ответа XSham от Microsoft:
Содержание
СодержаниеСимптомы
При запуске макроса Microsoft Visual Basic для приложений, который пытается установить или получить свойства настройки страницы для любого лист в книге в Microsoft Excel, вы можете получить любой из следующие сообщения об ошибках:
Ошибка времени выполнения “1004”: невозможно установить свойство x для PageSetup Ошибка времени выполнения класса “1004”: невозможно получить свойство x Класс PageSetup
Причина
Эта проблема возникает, если на вашем компьютере не установлены драйверы принтера. Excel не может установить или получить параметры настройки страницы, если не установлены драйверы принтера.
Разрешение
Чтобы предотвратить возникновение этой проблемы, установите на компьютер драйвер принтера. Используйте параметр “Принтеры” на панели управления для добавления и удаления драйверов принтера.