Here is the code needed to get caller ID
VB Code:
  1. Option Compare Text
  2. Private Sub Form_Load()
  3.  
  4. MSComm1.CommPort = 3
  5. ' 9600 baud, no parity, 8 data, and 1 stop bit.
  6. MSComm1.Settings = "9600,N,8,1"
  7. ' Tell the control to read entire buffer when Input
  8. ' is used.
  9. MSComm1.InputLen = 0
  10. ' Open the port.
  11. MSComm1.PortOpen = True
  12. ' Send the attention command to the modem.
  13. MSComm1.Output = "ATZ" & Chr$(13) ' Ensure that
  14.  
  15.    Do
  16.       DoEvents
  17.    Buffer$ = Buffer$ & MSComm1.Input
  18.    Loop Until InStr(Buffer$, "OK" & vbCrLf)
  19.    
  20. Text1.Text = Text1.Text & MSComm1.Input
  21. ' the modem responds with "OK".
  22. ' Wait for data to come back to the serial port.
  23.    
  24. ' Read the "OK" response data in the serial port.
  25. ' Close the serial port.
  26. num = 1
  27. reselect:
  28. '
  29. Select Case num
  30. '
  31. Case 1
  32.     cidm = "AT%CCID=1"
  33. '
  34. Case 2
  35.     cidm = "AT#CID=1"
  36.  
  37. Case 3
  38.  
  39.     cidm = "AT+VCID=1"
  40.  
  41. Case 4
  42.     cidm = "AT#CC1"
  43.  
  44. Case 5
  45.     cidm = "AT*ID1"
  46.  
  47. End Select
  48.  
  49. MSComm1.Output = cidm & Chr$(13) ' Ensure that
  50.  
  51. Do Until MSComm1.InBufferSize
  52.  
  53.     DoEvents
  54. Loop
  55. 'Text1.Text = Text1.Text & MSComm1.Input
  56.  
  57. If InStr(1, MSComm1.Input, "Error", vbTextCompare) Then
  58.     num = num + 1
  59.     GoTo reselect
  60. End If
  61.  
  62. End Sub
  63.  
  64. Private Sub MSComm1_OnComm()
  65. On Error Resume Next
  66.  
  67. Dim InString As String
  68. ' Retrieve all available data.
  69. MSComm1.InputLen = 0
  70. 'Text1.Text = Text1.Text & "Dropped Phone" & vbCrLf
  71. ' Check for data.
  72.  
  73. If MSComm1.InBufferCount Then
  74.     ' Read data.
  75.     ww = MSComm1.Input
  76.     Text1.Text = Text1.Text & ww
  77.  
  78.     If ww Like "*Privacy*" Then
  79.      '   Data1.Recordset.AddNew
  80.         pos = InStr(1, ww, "Time=", vbTextCompare)
  81.         List1.AddItem Mid(ww, pos + 5, 11)
  82.      '   Data1.Recordset!Time = Mid(ww, pos + 5, 11)
  83.      '   Data1.Recordset!Name = "Private Caller"
  84.          List1.AddItem  "Private Caller"
  85.      '   Data1.Recordset.Update
  86.         Exit Sub
  87.     End If
  88.  
  89.     If ww Like "*NAME*" Then
  90.       '  Data1.Recordset.AddNew
  91.         pos = InStr(1, ww, "Time=", vbTextCompare)
  92.         List1.AddItem Mid(ww, pos + 5, 11)
  93.       '  Data1.Recordset!Time = Mid(ww, pos + 5, 11)
  94.         pos = InStr(1, ww, "Nmbr=", vbTextCompare)
  95.         List1.AddItem Mid(ww, pos + 5, 10)
  96.       '  Data1.Recordset!Number = Mid(ww, pos + 5, 10)
  97.         pos = InStr(1, ww, "Name=", vbTextCompare)
  98.        
  99.         nme = Mid(ww, pos + 5)
  100.  
  101.         If InStr(1, nme, ",") Then
  102.             pos = InStr(1, nme, ",")
  103.             fnme = Mid(nme, pos + 1)
  104.             nme = Mid(nme, 1, pos - 1)
  105.         End If
  106.  
  107.         List1.AddItem Trim(Trim(fnme) & " " & Trim(nme))
  108.       '  Data1.Recordset!Name = StrConv(Trim(Trim(fnme) & " " & Trim(nme)), vbProperCase)
  109.       '  Data1.Recordset.Update
  110.       '  Data1.Recordset.Requery
  111.     End If
  112.  
  113. End If
  114.  
  115. End Sub

Add A list box and a TextBox. You could also use a database to store the numbers.