Я написал надстройку 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

0