【发布时间】:2016-07-12 13:20:45
【问题描述】:
这是我之前的帖子的延续:How to select a printer for entire job?,我基本上想从我的 Access 数据库中的表单打印一系列报告。
参考此帮助文档:https://msdn.microsoft.com/en-us/library/ee336132(v=office.12).aspx
我正在尝试创建包含活动打印机的组合框,以便临时更改一系列文档的默认打印机。我被它所说的“传递对 ComboBox 控件的引用”的地方绊倒了......如何实现这一点?
这是我到目前为止的代码,其中cboPrinterSelect 是组合框名称:
Private Sub cboPrinterSelect_Load(Cancel As Integer)
Call GetPrinterList
' I'm not sure about this next part either'
cboPrinterSelect.Value = GetPrinterList.value
End Sub
'***************************************************
Private Sub cboPrinterSelect_AfterUpdate(Cancel As Integer)
Set Application.Printer = Application.Printers(cboPrinterSelect.ListIndex)
End Sub
'***************************************************
Private Sub GetPrinterList(ctl As Control)
Dim prt As Printer
For Each prt In Printers
ctl.AddItem prt.DeviceName
Next prt
ctl = Application.Printer.DeviceName
End Sub
任何帮助/建议将不胜感激。
编辑:
这是我更新的代码,但仍然抛出错误(在 Andre 的 cmets 中有描述):
Private Sub Form_Load()
Call GetPrinterList(Me.cboPrinterSelect)
End Sub
'*********************************************************
Private Sub cboPrinterSelect_AfterUpdate(Cancel As Integer)
Set Application.Printer = Application.Printers(cboPrinterSelect.ListIndex)
End Sub
'***************************************************************
Private Sub GetPrinterList(ctl As Control)
Dim prt As Printer
For Each prt In Printers
ctl.AddItem prt.DeviceName
Next prt
ctl = Application.Printer.DeviceName
End Sub
【问题讨论】:
-
cboPrinterSelect 这也是表单的名称吗?
-
您拥有
Private Sub GetPrinterList(ctl As Control),但在调用Call GetPrinterList时并未将控件传递给它。您需要添加Call GetPrinterList(your_control_name) -
表单名称为“_Print Series”,cboPrinterSelect 只是组合框名称。 @ShaiRado,你能发布一个例子来说明你的意思吗?
-
Private Sub cboPrinterSelect_Load(Cancel As Integer) 那么这段代码应该在表单中加载吗?并且您没有 arg 并且 ctl 不是可选的,因此需要一个。
-
你可能是对的,但我不知道还能把它放在哪里......也许是更新后而不是加载?正如我所说,我正在尝试按照msdn.microsoft.com/en-us/library/ee336132(v=office.12).aspx 此处的指示进行操作,并且感到困惑
标签: ms-access printing combobox vba