Автор вопроса: bam | Web-сайт:яндекс.ру | ICQ: 307429922
Всем привет. Возникла необходимость в связи с отказом от MS Excel написать утилиту на VBS.
Есть dll(com-объект) для работы с весами через ком-порт, регистрируемая в Windows с помощью команды regsvr32. В ней две вызываемые функции Init(int port) и ReadWeightResult().
Init инициализирует com-port, ReadWeightResult возвращает вес с девайса.
На VBA использование этих методов работает и выглядит так:
Private Sub ClickProject2()
Dim Obj As PVScale.Scale
Set Obj = New PVScale.Scale
Obj.Init 1
Debug.Print Obj.ReadWeightResult
For i = 1 To 950
Debug.Print "" & i & " " & Obj.ReadWeightResult
Next
End Sub
Попытка сделать нечто похожее на VBS результатов не приносит, выдается ошибка: Требуется объект,
Код 800A01A8.
Dim Obj
Set Obj = CreateObject("PVScale.Scale")
Obj.Init 1
msgBox Obj.ReadWeightResult
Объект, похоже создается, о чем свидетельствует следующий код и выводится "Ложь".
Dim Obj
Set Obj = CreateObject("PVScale.Scale")
msgBox Obj is nothing
Если объект создается, то как тогда использовать его методы на VBS?
Dim Obj As PVScale.Scale
Set Obj = new ActiveXObject("PVScale.Scale"
MsgBox IsObject(Obj)
Код ошибки: 800A0401.
Вчера написал эту утилиту на VB, код приведу ниже. Но осадок от непонятости, почему это так и не заработало на vbs остался.
Private flag As Boolean
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_Paint()
On Error GoTo SubMain_Err
If flag = False Then
flag = True
 im Obj As PVScale.Scale
Set Obj = New PVScale.Scale
Obj.Init (1)
If Obj.ReadWeightResult > -1 Then
MsgBox "Весы находятся в рабочем режиме. Полученный вес=" & CStr(Obj.ReadWeightResult), vbOKOnly, "Внимание"
Else
MsgBox "Весы необходимо инициализировать!", vbOKOnly, "Внимание"
End If
End If
Exit Sub
SubMain_Err:
If Err.Number = 429 Then
MsgBox "Не зарегистрирована библиотека PVScale60.dll. Код ошибки:" & Err.Number & ": " & Err.Description & "", vbExclamation + vbOKOnly, ""
Else
MsgBox "Возникла непредвиденная ошибка! " & Err.Number & ": " & Err.Description & "-> " & Err.Source, vbExclamation + vbOKOnly, VB.App.ProductName
End If
End Sub