La Web del Programador: Comunidad de Programadores
 
    Pregunta:  57243 - CAMBIOS EN EL MODELO DE OBJETOS OFFICE 2007 VS XP (2002) EXC
Autor:  Aduy Yoani García Duarte
Al desarrollar una macro de Excel en VBA en la versión Office XP (2002) tenía dentro de las aplicaciones la insturcción FILESEARCH, la cual me permitía funcionalidad en la ejecución de la macro, dado que al momento de buscar un archivo para luego habrirlo la macro primero hacia la consulta con la aplicación FILESEARCH si se evidencia su existencia procedía ha abrirlo si no lo encontraba pasba por alto este archivo dejando la constancia de que el archivo no se encuentra, procediendo luego con la busqueda de los demás archivos. pero actualmente estoy en el proceso de migración a la aplicación de Office 2007 y encuentro que la aplicación FILESEARCH hacido ocultada, por lo que ya no se permite su ejecución quitándole funcionalidad a la ejecución de la macro, agradezco me orienten sobre el tema para saber si esque esta aplicación tiene reemplazo o si su estrucutar cambio para poder adecuar la macro y con ello mantener su funcionalidad.
Ejemplo de la instrucción actual que me presenta inconvenientes en el Office 2007:

Set fs = Application.FileSearch
With fs
.LookIn = "C:INVENTARIOSARCHIVOS MESMventamFeb-08 ""
.Filename = "mventam.101""
If .Execute(SortBy:=msoSortByFileName) > 0 Then

Agradezco la ayuda que me puedan brindar. Muchas Gracias

Aduy García

  Respuesta:  Jaime A. Carrasquilla Cadavid
Mira a ver si esto te puede servir.

Sólo existe una colección FileTypes para todas las búsquedas; por tanto, es importante borrar la colección FileTypes antes de realizar una búsqueda, a menos que desee buscar los tipos de archivos de búsquedas anteriores. La forma más sencilla de borrar la colección es establecer la propiedad FileType en el primer tipo de archivo que desee buscar. También puede quitar tipos individuales mediante el método Remove. Para determinar el tipo de archivo de cada elemento de la colección, utilice el método Item con el fin de devolver el valor msoFileType.

Nota
La propiedad FileType del objeto FileSearch borra la colección FileTypes y establece el primer elemento de la colección en el tipo de archivo que defina la propiedad FileType.

Ejemplo:

Utilice la propiedad FileTypes con el objeto FileSearch para devolver una colección FileTypes; por ejemplo:

En Visual Basic para aplicaciones

Set ft = Application.FileSearch.FileTypes

El ejemplo siguiente busca en todos los archivos HTML y de Microsoft Excel de la unidad C:.

Sub SearchForFiles()

'Declare a variable to act as a generic counter
Dim lngCount As Long

'Use a With...End With block to reference the
'FileSearch object
With Application.FileSearch

'Clear all the parameters of the previous searches.
'This method doesn't clear the LookIn property or
'the SearchFolders collection.
.NewSearch

'Setting the FileType property clears the
'FileTypes collection and sets the first
'item in the collection to the file type
'defined by the FileType property.

.FileType = msoFileTypeWebPages

'Add a second item to the FileTypes collection
.FileTypes.Add msoFileTypeExcelWorkbooks

'Display the number of FileTypes in the collection.
MsgBox "You are about to search for " & .FileTypes.Count & _
" file types."

'Set up the search to look in all subfolders on the C: drive.
.LookIn = "C:"
.SearchSubFolders = True

'Execute the search and test to see if any files
'were found.
If .Execute > 0 Then

'Display the number of files found.
MsgBox "Files found: " & .FoundFiles.Count

'Loop through the list of found files and
'display the path of each one in a message box.
For lngCount = 1 To .FoundFiles.Count
If MsgBox(.FoundFiles.Item(lngCount), vbOKCancel, _
"Found files") = vbCancel Then

'Break out of the loop
lngCount = .FoundFiles.Count

End If
Next lngCount
Else
MsgBox "No files found."
End If
End With
End Sub

El ejemplo siguiente recorre la colección FileTypes y quita los tipos de archivo que no sean de Microsoft Word o Microsoft Excel (en general, es más sencillo borrar la colección FileTypes y empezar desde el principio).

En Visual Basic para aplicaciones

Sub RemoveFileTypeFromCollection()

'Define an integer to use as a counter
'when iterating through the FileTypes collection.
Dim intFileIndex As Integer

'Use a With...End With block to reference the FileSearch object.
With Application.FileSearch

'Loop through all of the items in the FileTypes collection.
intFileIndex = 1
Do While intFileIndex = .FileTypes.Count
Select Case .FileTypes.Item(intFileIndex)
Case msoFileTypeWordDocuments, msoFileTypeExcelWorkbooks
Case Else

'If the file type isn't a Microsoft Word or
'Microsoft Excel file, remove it.
.FileTypes.Remove intFileIndex

'Decrement the counter so that no file types are missed.
intFileIndex = intFileIndex - 1
End Select

'Increment the counter to test the next file type.
intFileIndex = intFileIndex + 1
Loop

End With
End Sub