Я написал надстройку Excel для VBA, которая берет отформатированный список адресов и взаимодействует с моим принтером этикеток Brother QL-570 с помощью SDK Brother «Label Solutions»: http://www.brother.com/product/dev/ этикетка / bpac / загрузить / bpaccci156 / index.htm
Ранее я запускал этот код на другом компьютере, на котором установлен SDK, и он работает отлично. Теперь, используя его на моей машине, он не работает. Моя машина работает под управлением Windows 10, и у меня есть Excel 2010. После запуска надстройки я получаю эту ошибку:«Ошибка выполнения 249, ActiveX не может создать объект».
Насколько я понимаю, эта ошибка указывает на отсутствующий файл. Однако, посмотрев в меню «Инструменты» -> «Ссылки в Developer», я вижу, что после успешной установки проверяется «Библиотека типов Brother b-PAC 3.1» . Поэтому я не уверен, в чем проблема.
Наконец, я не верю, что проблема заключается в коде, так как он работает на другом ПК, несмотря на то, что для справки найдите код ниже.
Каковы возможные причины этой ошибки?
МОЙ КОД:
Ошибка происходит в пятой строке: «Set objDoc = CreateObject(« bpac.Документ"").
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