The line
Log("Filelisting1 size = " & FileListing1.Size)
is bound to show 0 because it is executed immediately after wcl.ListFiles whereas wcl.ListFiles causes wcl to fire the wcl_ListFilesFinish event. But that event is added to the end of the event queue. It won't be executed until after the current execution completes (namely the function stack in which Import_click resides). And you can't be guaranteed of the results you want (filling FileListing1) until that event executes. In short, you need to fill the ListView in the wcl_ListFilesFinish event sub (or after you know it has executed) because that's the earliest time when you can be guaranteed that FileListing1 has been filled.
If you find this event system awkward to use, you can try LucaMS's suggestion and use a synchronous class to accomplish this task. But beware of ANRs.