Как исправить ошибку «Ошибка выполнения 429», которую видят пользователи Mac? - PullRequest
0 голосов
/ 19 сентября 2019

Я разработал модель Excel, которая при ее открытии просматривает серийный номер компьютера, чтобы проверить, разрешено ли использование серийного номера этой модели.Как только серийный номер определен, он сверяется со списком серийных номеров на скрытом листе.Код, который у меня есть, работает на компьютерах с Windows, но когда он работает на булаве, он не работает.Этот код выполняется как часть события Workbook_Open.Когда код в этом событии запускается, если у пользователя есть Mac, он получает сообщение об ошибке, которое гласит следующее:

Ошибка времени выполнения '429':

Компонент ActiveX не может создать объект

В результате этой ошибки лист не может выполнить требуемую проверку, и электронная таблица остается непригодной для использования.

Я тестировал этот код на своем компьютере под управлением Windows 10. Он работает для меня и для многих других пользователей под управлением Windows.Но все пользователи Mac сталкиваются с той же проблемой.Ниже приведен код, который у меня есть, и я ожидаю, что это строка Set fsObj в коде, вызывающая проблему.

Private Sub Workbook_Open()

    Dim wb As Workbook: Set wb = ThisWorkbook
    Dim obj As New DataObject
    Dim txt As String

'Pull Serial Number from Computer

        Dim fsObj   As Object
        Dim drv     As Object
        Set fsObj = CreateObject("Scripting.FileSystemObject")
        Set drv = fsObj.Drives("C")

'Insert Serial Number in a Named Range

        Range("SN").Value = Left(Hex(drv.SerialNumber), 4) _
             & "-" & Right(Hex(drv.SerialNumber), 4)

End Sub

Я не знал, что может быть другой код, который может понадобиться для извлеченияСерийный номер от Mac.Есть ли способ, с помощью которого я могу определить, является ли это Mac или Windows, а затем на основе этого затем выполнить правильный код в зависимости от ОС пользователя.

Итак, у меня есть пара вопросов, на которые мне нужно ответить.
1) Как определить ОС, чтобы потом можно было запускать соответствующий код ... при условии, что для извлечения серийного номера нужен другой кодс Mac.2) Какой код необходим для извлечения серийного номера машины Mac.

В конце я хочу, чтобы код мог сообщить мне, какой серийный номер машины открыл файл, чтобы я могможно подтвердить серийный номер с помощью серийных номеров, которые у меня есть в списке.

1 Ответ

0 голосов
/ 19 сентября 2019

Давайте начнем с плохих новостей.

Set fsObj = CreateObject("Scripting.FileSystemObject")

Библиотека Scripting не существует на Mac, и я не уверен, что CreateObject вообще работаетесли нет реестра для запроса с предоставленной строкой ProgID (или CLSID).

Хорошей новостью является то, что вы можете абсолютно точно знать, работает ли ваш код на Mac, используя директивы прекомпилятора ( docs * 1011).*):

Public Sub DoSomething()
#If Mac Then
    Exit Sub
#End If

    '...do stuff...

End Sub

Что касается того, какой код получит вам серийный номер накопителя, вам нужно будет найти какой-нибудь код , который это делает, и поместить его в Stringи VBA запустит его с функцией MacScript , ... но устареет в пользу AppleScriptTask в Excel 2016.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...