HOLA!!!
Fname si es el NombreDelArchivo es una variable String.
(estos ejemplos te los hago como si la carpeta fuera C:\ y con cosas basicas)
1:
If Dir("c:\*.msu") = vbNullString Then
MsgBox "error no se encuentra archivo msu"
'esto yo lo haria con un If de una linea pero para empezar dejalo asi
End If
2:
Dim CT As Integer
Dim archivo As String
archivo = Dir("c:\*.msu")
While archivo <> ""
'para buscar el siguiente archivo se usa dir solo
archivo = Dir
CT = CT + 1
Wend
lblTotal.Caption = Str(CT)
'CT es la cantidad de archivos
3:
Dim archivo As String
archivo = Dir("c:\*.msu")
While archivo <> ""
'shell ejecuta
Shell archivo
'Esperar a que cierre un proceso es mas complicado, busca en el foro.
'ESTO EJECUTARA TODOS LOS MSU
'para buscar el siguiente archivo se usa dir solo
archivo = Dir
Wend
4:
Dim archivo As String
archivo = Dir("c:\*.msu")
While archivo <> ""
'shell ejecuta msu
Shell archivo
'Suponemos que esperar al cierre del proceso es "EsperaCierre"
While esperacierre(archivo) = False
DoEvents
'doevents libera el procesador y lo deja ejecutar otras operaciones
Wend
'para buscar el siguiente archivo se usa dir solo
LblTerminados.Caption = Str(Val(LblTerminados.Caption +1))
archivo = Dir
Wend
En cuanto a lo ultimo, hay mucha info para reiniciar la pc, solo deberias fijarte en el label cuando sea = el de terminados y el de totales.
Conste que hago la "tarea" por que he visto a pitoloko (odio ese nick) y parece que tiene ganas de aprender.
GRACIAS POR LEER!!!