我用 VBA 编写了一个 Excel 插件,它采用格式化的地址列表,并使用 Brother“标签解决方案”SDK 与我的 Brother QL-570 标签打印机进行通信:http://www.brother.com/product/dev/label/bpac/download/bpaccci156/index.htm
我之前在安装了 SDK 的另一台计算机上运行过此代码,并且运行正常。现在在我的计算机上使用它却不起作用。我的计算机运行的是 Windows 10,并且装有 Excel 2010。运行该插件时出现此错误: “运行时错误 249,ActiveX 无法创建对象。”
据我所知,此错误表示缺少文件。但是,从 Developer 中的 Tools -> References 下查看,我可以看到“Brother b-PAC 3.1 类型库”安装成功后会进行检查。因此我不确定问题是什么。
最后,我不认为代码是问题所在,因为这在另一台电脑上运行良好,无论如何都可以找到下面的子代码以供参考。
造成此错误的潜在原因有哪些?
我的代码:
错误发生在第五行:“Set objDoc = CreateObject(“bpac.Document””)。
Public Sub PrintLabels(ByVal Control As IRibbonControl)
Dim numRows As Integer
numRows = GetRowCount(2)
Dim objDoc As bpac.Document
Set objDoc = CreateObject("bpac.Document")
For i = 1 To numRows
Dim templateFile As String
Dim mailService As String
mailService = ActiveSheet.Cells(i + 1, 11).Text
If mailService = "1" Then
templateFile = labelTemplateFile1st
ElseIf mailService = "2" Then
templateFile = labelTemplateFile2nd
Else
templateFile = labelTemplateFile
End If
If objDoc.Open(templateFile) Then
Dim printers() As Variant
printers = objDoc.Printer.GetInstalledPrinters()
Dim installedPrinterName As Variant
installedPrinterName = printers(0)
objDoc.SetPrinter printers(0), True
objDoc.StartPrint "Label", bpoDefault 'Sets label cutting to default value.
objDoc.GetObject("ORDERNUM").Text = ActiveSheet.Cells(i + 1, 1).Text
objDoc.GetObject("NAMDRESS").Text = ActiveSheet.Cells(i + 1, 2).Text
objDoc.GetObject("ORDERDETS").Text = ActiveSheet.Cells(i + 1, 3).Text
objDoc.PrintOut 1, bpoDefault
objDoc.EndPrint
objDoc.Close
Else
MsgBox objDoc.ErrorCode
End If
Next i
End Sub
答案1
尽管这是一篇旧帖子,但它是我在谷歌搜索此问题时得到的第一个结果。
我发现它与我的 32 位版本的 Microsoft Office 有关,而我在 64 位操作系统上运行它。
为了解决我的问题,除了 64 位版本外,我还安装了 32 位版本的 BPac SDK。(我没有先测试卸载 64 位版本)