As the Error told you, you need to create a Data Connection to the FTP as well as your inital connection,
this Data Connection is used for transfering files and retreiving the results of
LIST and other commands.

Here's some example code I put together a long time ago,
I've ran through it and it's still good, it demonstrates (in this case) how to retrieve a list of files from the FTP server:
Code:
'----------------------------------------------------
'                frmFTP (frmFTP.frm)
'
' Winsock Control Example of Basic FTP Operation
'
'----------------------------------------------------
' Written By:       Aaron Young
' Last Modified:    10/01/1999
'
' Add 2 Winsock Controls (wskFTP and wskDC)
' Add 2 Multiline Textboxes (txtData and txtDCData)
' Add 2 Command Buttons (cmdConnect and cmdDisconnect)
'
Option Explicit

Private Sub cmdConnect_Click()
    'Connect to the FTP site
    With wskFTP
        If .State <> sckClosed Then .Close
        .LocalPort = 0
        .RemoteHost = "ftp.server.com"
        .RemotePort = 21
        .Connect
    End With
End Sub

Private Sub cmdDisconnect_Click()
    'Close the FTP & Data Connections
    If wskFTP.State <> sckClosed Then wskFTP.Close
    If wskDC.State <> sckClosed Then wskDC.Close
End Sub

Private Sub Form_Unload(Cancel As Integer)
    'Make sure the Winsocks are Disconnected
    cmdDisconnect_Click
End Sub

Private Sub wskFTP_Connect()
    'Once Connected Login, Open a Data Connection and send a Command
    wskFTP.SendData "USER usernamehere" & vbCrLf
    wskFTP.SendData "PASS passwordhere" & vbCrLf
    wskFTP.SendData "SYST" & vbCrLf
    If OpenDataConnection(True) Then
        'Successfully Opened a Data Connection to -
        'the Server Execute Data Command..
        wskFTP.SendData "LIST" & vbCrLf
    End If
End Sub

Private Sub wskFTP_DataArrival(ByVal bytesTotal As Long)
    'Recieve FTP Messages
    Dim sNewData As String
    wskFTP.GetData sNewData, vbString, bytesTotal
    txtData.SelText = sNewData
End Sub

Private Sub wskDC_ConnectionRequest(ByVal requestID As Long)
    'Data Connection Winsock Waits For FTP Server to try and Connect
    Dim sData As String
    wskDC.Close
    wskDC.Accept requestID
End Sub

Private Sub wskDC_DataArrival(ByVal bytesTotal As Long)
    'Recieve Data from the Data Connection, i.e. Lists, etc..
    Dim sNewData As String
    Dim iFile As Integer
    wskDC.GetData sNewData, vbByte, bytesTotal
    txtDCData.SelText = sNewData
End Sub

Private Function OpenDataConnection(Optional ByVal bBinary As Boolean = False) As Boolean
    'Open a Data Connection to the FTP Server -
    'Used for Send/Recieving Files and List Commands, etc..
    On Error GoTo Error_Exit
    While wskDC.State <> sckClosed
        wskDC.Close
    Wend
    If wskDC.State = sckClosed Then
        'Setting the Port to Zero Before Listening -
        'Selects an Available Port Automatically.
        wskDC.LocalPort = 0
        wskDC.Listen
        'Set the Transfer Type to Either -
        'ASCII(A) or Binary(I)
        wskFTP.SendData "TYPE " & IIf(bBinary, "I", "A") & vbCrLf
        'Calculate the PORT Hi and Lo Numbers and Tell the FTP Connection where to send data from Server commands
        wskFTP.SendData "PORT " & Replace(wskDC.LocalIP, ".", ",") & "," & Val("&H" & Left(Right("0000" & Hex(wskDC.LocalPort), 4), 2)) & "," & (wskDC.LocalPort And &HFF) & vbCrLf
    End If
    OpenDataConnection = True
Error_Exit:
End Function