Buscar libro con solo parte del nombre

04/03/2006 - 03:18 por klomkbock | Informe spam
Hola a todos

Quisiera saber como puedo buscar un libro mediante codigo, dando solo las
dos o tres primeras letras del nombre del libro y (si es util) las tres
ultimas(Ej. "AC ... inv") asi como seleccionar entre los que
aparezcan el ultimo creado, para copiarlo en un nuevo libro. Se trata de
actualizar el ultimo inventario(sufijo "inv" en todos) de un proveedor
concreto("AC" en el ej.) sin modificarlo, o sea creando uno nuevo, desde
un formulario. En la ayuda de VBA no acabo de aclararme.

Gracias en cualquier caso.
Un saludo y hasta pronto.
Ivan

Preguntas similare

Leer las respuestas

#1 klomkbock
05/03/2006 - 03:59 | Informe spam
Hola Hector Miguel, gracias de nuevo.
Es lo que estaba buscando. Lo he adaptado para usarlo con un formulario y
funciona perfectamente excepto si solo introduzco una letra, que me suele
buscar un archivo equivocado (¿Puede ser porque halla archivos que
comienzen por la misma letra?) que en ocasiones ni siquiera comienza con
la letra introducida en el textBox. Sin embargo si introduzco un espacio
detras de la letra si parece hacer bien su trabajo. ¿Podrias decirme a que
se debe?.

Por otro lado me interesaria que me pidiera permiso antes de guardar el
archivo, pero a ser posible poder trabajar con el (la idea es llamarlo en
la primera pagina de un control multipagina para aplicarle determinado
tratamiento en las paginas restantes, y guardarlo solo al apretar el
cmbAceptar general del formulario. Supongo que se podra hacer con un
condicional y un msgBox o similar.

Y ¿como puedo guardarlo en otro lado? ¿añadiendo la ruta en el nuevo
nombre?

Creo que ya he vuelto a pasarme con mis dudas.
En cualquier caso muchas gracias.
Un saludo y hasta pronto
Ivan

PD: adjunto el codigo tal y como ha quedado (el formulario en el que esta
no es el de el multipagina, esta hecho exprofeso para probar el codigo).


Private Sub cmbBuscar_Click()
' Sub Buscar_Reciente()
Dim Directorio As String, Patron As String, Sig As Byte, Reciente As Byte
Directorio = _
"C:\Documents and Settings\Ivan\Mis documentos\Pruebas Formulario
Inventario" _
' "c:uta y sub\carpetas\donde buscar"
Patron = txtCprBuscar & "*inv.xls" '"ac*inv.xls"
With Application.FileSearch
.NewSearch
.LookIn = Directorio
.SearchSubFolders = False
.Filename = Patron
If Not .Execute() > 0 Then MsgBox _
"No existen archivos " & Patron & " en:" _
& vbCr & Directorio: Exit Sub
Reciente = 1
For Sig = 1 To .FoundFiles.Count
If CDbl(FileDateTime(.FoundFiles(Sig))) > _
CDbl(FileDateTime(.FoundFiles(Reciente))) _
Then Reciente = Sig
Next
lblUltimoInv = .FoundFiles(Reciente)
Workbooks.Open .FoundFiles(Reciente)
End With
' ActiveWorkbook.SaveAs "pon aqui el nuevo nombre", xlWorkbookNormal
ActiveWorkbook.SaveAs txtCprBuscar & " " & _
txtFechaNuevoInv & "-inv.xls", xlWorkbookNormal
' End Sub
lblNuevoNombre = ActiveWorkbook.Name
End Sub
Respuesta Responder a este mensaje
#2 Héctor Miguel
05/03/2006 - 08:39 | Informe spam
hola, Ivan !

... funciona... excepto si solo introduzco una letra, que me suele buscar un archivo equivocado
(Puede ser porque halla archivos que comienzen por la misma letra?)
... en ocasiones ni siquiera comienza con la letra introducida en el textBox.
... si introduzco un espacio detras de la letra si parece hacer bien su trabajo... a que se debe?.



=> [creo que] esta 'respuesta'... tu la conoces mejor que yo :)) [existen archivos con nombres 'parecidos' ?]

... que me pidiera permiso antes de guardar el archivo... y guardarlo solo al apretar el cmbAceptar general del formulario.
Supongo que se podra hacer con un condicional y un msgBox o similar.



=> es correcto :) [incluso]... podrias 'mover' la instruccion con el 'SaveAs' al codigo del evento '_click' del 'cmbAceptar' ;)

... como puedo guardarlo en otro lado? a#adiendo la ruta en el nuevo nombre?



=> es correcto :) [incluso]... podrias 'tomarlo' de otro textbox... o establecerlo mediante otra 'variable' [p.e. GuardarEn] ;)

=> [solo] 'veo' un -posible- 'recorte' en el futuro nombre del -nuevo- archivo...
[p.e.] cuando 'buscas' SOLO una parte [la inicial] del nombre/codigo/... del proveedor...
cuando 're/construyes' el nuevo nombre... SOLO le aumentas un espacio en blanco [al txtCprBuscar] -???-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#3 klomkbock
06/03/2006 - 03:15 | Informe spam
Hola Hector Miguel, y de nuevo muchas gracias por todo.

=> [creo que] esta 'respuesta'... tu la conoces mejor que yo :)) [existen


archivos con nombres 'parecidos' ?]

Tienes razon. La verdad es que es bastante obvio. En realidad lo que
introduzco en el textBox para la busqueda es el CPR (codigo del proveedor)
que normalmente consta de dos letras pero en ocasiones solo de una, con lo
que el espacio viene a delimitar la diferencia con los CPRs similares.
Supongo que se puede buscar una forma de evitar tener que introducir el
espacio con algun condicional para si se introduce una sola letra, pero en
cualquier caso asi ya es muy util y me resuelve el problema.

=> [solo] 'veo' un -posible- 'recorte' en el futuro nombre del -nuevo-


archivo...
[p.e.] cuando 'buscas' SOLO una parte [la inicial] del


nombre/codigo/... del proveedor...
cuando 're/construyes' el nuevo nombre... SOLO le aumentas un espacio


en blanco [al txtCprBuscar] -???-

En realidad el nombre del libro solo contiene: "CPR(txtCpr) & " " & nueva
fecha del inventario(txtFechaNuevoInv) & " " & inv". Ej: "AC 5-03-06 inv"
o para un CPR de una sola letra: "R 5-03-06 inv".

Muchas gracias de nuevo
Un saludo y hasta pronto
Ivan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida