2015-01-14 817 views
2

我有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'。無法設置PageSetup類的PaperSize。這裏有什麼問題?

2:如何將紙張尺寸設置爲62mm x 50mm?

3:即使我將打印區域定義爲範圍(「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