Это мой код для получения COM-порта USB-модема
Public Sub GetModemCommPort()
Dim MSComm1 As Object
Dim lngCommPort As Long
Dim strInput As String
Set MSComm1 = ThisWorkbook.Sheets("Sheet1").MSComm1
On Error Resume Next
With MSComm1
.RThreshold = 0
For lngCommPort = 1 To 12
CloseCommPort
.CommPort = lngCommPort
.PortOpen = True
If Err.Number = 0 Then
.Output = "AT" & vbCrLf
Do
DoEvents
If .InBufferCount > 0 Then
strInput = strInput & .Input
If InStr(1, strInput, "OK") > 0 Then
MsgBox "Modem Found: COM" & lngCommPort
Exit For
End If
Else
Exit Do
End If
Loop
Else
Err.Clear
End If
Next lngCommPort
CloseCommPort
.RThreshold = 1
End With
Set MSComm1 = Nothing
End Sub
Public Sub CloseCommPort()
Dim MSComm1 As Object
Set MSComm1 = ThisWorkbook.Sheets("Sheet1").MSComm1
With MSComm1
If .PortOpen Then
.PortOpen = False
End If
End With
Set MSComm1 = Nothing
End Sub
Когда я запускаю этот код, он успешно выполняется один раз каждые 4 или 5 раз, когда я запускаю цикл с 1.
когда я зацикливаюсь, начиная с 8 (это модемный коммуникационный порт, который я уже знаю), он успешно выполняется каждый раз, когда я запускаю его без каких-либо проблем.
Успешное выполнение (даже один раз каждые X) означает, что нет проблем с самим кодом .. так что я делаю неправильно ??!
Заранее спасибо.