This is because the controls have not been instantiated correctly on the form before they attempt and action. You can either use the components on Form_Activate() or create the component dynamically.

The following is an example of creating a component dynamically and using that control on Form_Load(). Note, you must assign the FTP control as a reference in your VB application before doing this.

Dim WithEvents ftp1 As FTP

Private Sub Form_Load()

Set ftp1 = New FTP

ftp1.RemoteHost = "xxx.xxx.xxx"
ftp1.User = "user"
ftp1.Password = "password"

ftp1.Logon
ftp1.ListDirectory
ftp1.Logoff

End Sub

Private Sub ftp1_DirList(DirEntry As String, 
FileName As String, IsDir As Boolean, FileSize 
As Long, FileTime As String)

    Debug.Print FileName

End Sub

We appreciate your feedback.  If you have any questions, comments, or suggestions about this article please contact our support team at kb@nsoftware.com.