2015-01-14 5 views
2

У меня есть принтер Label Brother QL-720NW, на который я хочу напечатать некоторые ярлыки.Выбор размера бумаги (НЕ РАЗМЕР ПО УМОЛЧАНИЮ) в excel vba

Принтер имеет рулон шириной 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.

ответ

2

Вопрос 1

xlPaperUser является Определяемый пользователем размер бумаги, который присваивается постоянное значение 256. Если это не был определен, он может выдавать ошибку.

Вопрос 2

Там нет никакого способа для создания пользовательских размеров бумаги в Excel, однако вы можете создавать пользовательские форматы бумаги на многих принтерах. В разделе «Параметры страницы» нажмите кнопку «Параметры». Появится диалоговое окно свойств принтера. В этом диалоговом окне измените размер бумаги на нестандартный размер и нажмите «ОК».

Затем в Excel запустите это: MsgBox PageSetup.PaperSize. Это даст вам новое постоянное значение, присвоенное этому размеру бумаги в Excel. Затем измените .PaperSize = xlPaperUser в своем макросе на .PaperSize = & независимо от того, какая константа вы только что нашли.

Вопрос 3

.PrintArea принимает строку ввода, а не диапазон. Измените свою линию на ActiveSheet.PageSetup.PrintArea = Range("Img").Address, и она должна работать.

+0

Я предполагаю, что ваш ответ правильный, поэтому принимается. Но я думаю, что никогда не узнаю, потому что я решил выполнить эту работу на C# и создать DLL для макроса. –

+0

xlPaperUser, как это определено? Похоже, он может быть установлен в размере страницы настроек принтера? – zeta

+1

@zeta Я понимаю, что xlPaperUser определяется принтером, поэтому вы не можете установить его с помощью VBA. – TheEngineer