Buscar en Directorio\Subdirectorios y Abrir ARCHIVO indicado

01/12/2008 - 21:20 por Andrés Porfirio | Informe spam
Hola a todos!

Necesito una instrucción para una macro que haga lo siguiente:
Busque en todos los subdirectorios del disco "C:\" o en "Mi PC" el archivo
"Ejemplo.xls" y lo abra.

En fin, el asunto es que busque el archivo en todos los subdirectorios de la
raiz que se le indique.

Agradezco su ayuda!

Andrés.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
02/12/2008 - 01:37 | Informe spam
hola, Andrés !

Necesito una instruccion para una macro que haga lo siguiente:
Busque en todos los subdirectorios del disco "C:\" o en "Mi PC" el archivo "Ejemplo.xls" y lo abra.
En fin, el asunto es que busque el archivo en todos los subdirectorios de la raiz que se le indique...



ve si te sirve algo de lo comentado en las siguientes conversaciones: -> http://tinyurl.com/5skt3z

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Andrés Porfirio
02/12/2008 - 03:51 | Informe spam
El Siguiente Código funciona, pero BUSCA Y ABRE TODOS LOS ARCHIVOS.

NECESITO especificar uno y que me abra ese solo.
-
Sub Buscar()
Application.DisplayAlerts = False
On Error Resume Next
Dim basebook As Workbook
Dim mybook As Workbook
Dim pt As PivotTable
Dim ws As Worksheet
With Application.FileSearch
.NewSearch
.LookIn = "C:\Consultas\"
.SearchSubFolders = True
.FileType = msoFileTypeExcelWorkbooks
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
Set mybook = Workbooks.Open(.FoundFiles(i), UpdateLinks:=0,
IgnoreReadOnlyRecommended:=True, corruptload:=0)
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
Next pt
Next ws
ActiveWorkbook.RefreshAll
'ActiveWorkbook.Save
'ActiveWorkbook.Close
Next i
End If
End With
'Application.Quit
End Su
-
"Héctor Miguel" wrote:

hola, Andrés !

> Necesito una instruccion para una macro que haga lo siguiente:
> Busque en todos los subdirectorios del disco "C:\" o en "Mi PC" el archivo "Ejemplo.xls" y lo abra.
> En fin, el asunto es que busque el archivo en todos los subdirectorios de la raiz que se le indique...

ve si te sirve algo de lo comentado en las siguientes conversaciones: -> http://tinyurl.com/5skt3z

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.



Respuesta Responder a este mensaje
#3 Héctor Miguel
02/12/2008 - 04:20 | Informe spam
hola, Andrés !

El Siguiente Codigo funciona, pero BUSCA Y ABRE TODOS LOS ARCHIVOS...



1) (hasta donde se)... un objeto "FileSearch" pudiera ser ineficiente cuando se combinan "ciertos factores"... (p.e.)
- la pareja de versiones de office/excel con windows (y las actualizaciones instaladas)
- como se pudiera combinar el ".FileName" con el ".FileType" (y se se usan comodines antes/despues del patron de busqueda)
- con ciertas combinaciones'... el metodo ".Execute(...)" -> NO devuelve nada :-\\

2) (si te esta funcionando...) una alternativa es "recortar" el bucle despues del "if .execute() > 0 then"
y en lugar de usar un For...Next lo cambies por algo +/- como lo siguiente:
Set mybook = Workbooks.Open(.FoundFiles(1), UpdateLinks:=0, IgnoreReadOnlyRecommended:=True, corruptload:=0)

3) la otra alternativa es que (realmente) hagas caso de la sugerencia y...
ve si te sirve algo de lo comentado en las siguientes conversaciones: -> http://tinyurl.com/5skt3z

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.





__ el codigo expuesto __
NECESITO especificar uno y que me abra ese solo.
-
Sub Buscar()
Application.DisplayAlerts = False
On Error Resume Next
Dim basebook As Workbook
Dim mybook As Workbook
Dim pt As PivotTable
Dim ws As Worksheet
With Application.FileSearch
.NewSearch
.LookIn = "C:\Consultas\"
.SearchSubFolders = True
.FileType = msoFileTypeExcelWorkbooks
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
Set mybook = Workbooks.Open(.FoundFiles(i), UpdateLinks:=0,
IgnoreReadOnlyRecommended:=True, corruptload:=0)
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
Next pt
Next ws
ActiveWorkbook.RefreshAll
'ActiveWorkbook.Save
'ActiveWorkbook.Close
Next i
End If
End With
'Application.Quit
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida