Вопрос:
У меня есть принтер Label Brother QL-720NW, на который я хочу напечатать несколько ярлыков.
Принтер имеет рулон шириной 62 мм
Когда я пытаюсь что-то напечатать, мне нужно настроить страницу и определить размер страницы. Если размер страницы неверен (ширина более 62 мм), принтер ничего не печатает.
Теперь моя проблема в том, что я использую excel с макросами для отправки некоторых данных на принтер. Я знаю, что есть предопределенные размеры страниц (http://msdn.microsoft.com/en-us/library/office/ff834612%28v=office.15%29.aspx), которые можно использовать, но в моем случае все они слишком велики для этой цели.
Вот пример кода, который у меня есть:
Sub CreateTestCode() ‘ setting printer Dim objPrinter As String objPrinter = ActivePrinter ActiveSheet.PageSetup.PrintArea = Range(«Img») With ActiveSheet.PageSetup .PrintTitleRows = «» .PrintTitleColumns = «» .PrintHeadings = False .PrintGridlines = False .RightMargin = Application.InchesToPoints(0.39) .LeftMargin = Application.InchesToPoints(0.39) .TopMargin = Application.InchesToPoints(0.39) .BottomMargin = Application.InchesToPoints(0.39) .PaperSize = xlPaperUser .Orientation = xlLandscape .Draft = False End With Dim printerName As String printerName = «BrotherQL720NW Labelprinter on XYZ» ActiveSheet.PrintOut Preview:=True, ActivePrinter:=printerName ActivePrinter = objPrinter End Sub
Теперь у меня есть 3 вопроса:
1: В.PaperSize = xlPaperUser я получаю ошибку времени выполнения ‘1004’. Не удалось установить PaperSize класса PageSetup. Что здесь не так?
2: Как я могу установить размер бумаги примерно на 62 мм x 50 мм?
3: Даже если я определяю область печати в Range (“Img”), она все равно печатает весь лист?!?
Кстати, я совершенно не знаком с vba, это моя первая попытка использовать vba.
Лучший ответ:
Вопрос 1
xlPaperUser – это размер бумаги, заданный пользователем, которому назначено постоянное значение 256. Если это не было определено, оно может вызвать ошибку.
вопрос 2
В Excel нет возможности создавать собственные размеры бумаги, однако вы можете создавать собственные размеры бумаги на многих принтерах. В разделе “Параметры страницы” нажмите кнопку “Параметры”. Появится диалоговое окно свойств принтера. В этом диалоговом окне измените размер бумаги на нестандартный размер и нажмите “ОК”.
Затем в Excel запустите это: MsgBox PageSetup.PaperSize. Это даст вам новое постоянное значение, присвоенное этому размеру бумаги в Excel. Затем измените .PaperSize = xlPaperUser в своем макросе на .PaperSize = & независимо от того, что константа вы только что нашли.
Вопрос 3
.PrintArea принимает строковый ввод, а не диапазон. Измените свою линию на ActiveSheet.PageSetup.PrintArea = Range(«Img»).Address и он должен работать.