i'd guess that at the time you sent "AT+CIMI" and then read existing the devices response has not yet arrived. you can simply put a 1 second delay after the write to see if this assumtion is true. for final code you should change this to more clever approches with threads/events.
(untested)
Code:
Dim com1 As SerialPort = New System.IO.Ports.SerialPort
com1.PortName = "COM6"
com1.Open()
If com1.IsOpen Then
com1.Write("AT+CIMI")
Threading.Thread.Sleep(1000)
Dim result As String
result = com1.ReadExisting
MsgBox(result)
Else
MsgBox("port not open")
End If