Here is the code, ratehr heavily commented. I think this will answer your questions reference my example snippet.
Option Explicit
Sub exa()
Dim FSO As Object '<FileSystemObject
Dim aryPreface As Variant
Dim i As Long
'// Here would be the common/single folder that all the files are being copied or moved //
'// from. //
Const PATH_START As String = "D:\2010\_Tmp\2010-09-17\"
'// Created a reference to FileSystemObject; see vba help. //
Set FSO = CreateObject("Scripting.FileSystemObject")
'// Here, I simply used a demonstration of an array of 'filename prefixes'. In the //
'// folder I opened, I had a few wb's each, that started w/one of the below, hence, //
'// an easy test. //
'// As I mentioned, I would probably just use a two-dimensional array, one half //
'// would have the prefixes, and the second element in the same row/col could have //
'// the destination path. If destinations and/or prefixes might change later, we //
'// could pick up both from a spreadsheet. //
'// Back to our example: For my ease, I just chose to check if a folder with the //
'// same name as the prefix existed, if not create it. //
aryPreface = Array("vba", "Sea", "exa")
'// As mentioined, this defines a loop. 0 to 2 matches the elements in the array //
'// aryPreface, as we created a zero-based one-dimension array by using, (you guessed//
'// it) Array(). //
'// For absolute assuredness, we could use L/U Bound //
For i = LBound(aryPreface, 1) To UBound(aryPreface, 1)
If Not FSO.FolderExists(PATH_START & aryPreface(i)) Then
FSO.CreateFolder (PATH_START & aryPreface(i))
End If
'// You mentioned looping, and we are, but not once per file. We are only //
'// looping once per prefix. So, in our example, in the first time thru the //
'// loop, we are copying any/all files that start with "vba", followed by //
'// one-to-many characters, and ending with ".xls". //
'// Think of this as the same as when (in Windows Explorer) you click on one //
'// file, and with Shift pressed, click on another file so that several files //
'// are selected. Then you would copy them all at once. //
FSO.CopyFile PATH_START & aryPreface(i) & "?*.xls", _
PATH_START & aryPreface(i) & "\", False
Next
End Sub
Hope that helps,
Mark