He encontrado esta función que es más completa y mucho más técnica que la que tengo hecha. Pero al pasarla a Visual Studio he tenido que cambiar algunas lineas de código, sin embargo me da un error que no consigo entender ya que consigo encontrar información sobre el mismo. Les pongo el código para ver si alguna persona puede prestarme ayuda.
Public Function BuscarArchivo(ArchivoBuscado As String) As String
Try
Dim sDir As String, lRet As Long
Dim lDrive As Long, sDrive As String, i As Integer
'Screen.MousePointer = vbHourglass
Cursor.Current = Cursors.WaitCursor
lDrive = GetLogicalDrives
For i = 0 To 25
' buscar en todas las unidades
If (lDrive And CLng((2 ^ i))) <> 0 Then
sDrive = Convert.ToChar(65 + i) & ":\"
sDir = Convert.ToString(260, 0) 'El error que da es: "Base no válida"
lRet = SearchTreeForFile(sDrive, ArchivoBuscado, sDir)
If lRet <> 0 Then
BuscarArchivo = Left$(sDir, InStr(1, sDir, Convert.ToChar(0)) - 1)
Exit For
End If
End If
Next i
If lRet = 0 Then BuscarArchivo = "No encontrado"
Cursor.Current = Cursors.Default
'Screen.MousePointer = vbDefault
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Function
Un saludo y gracias