BUSCAR LIBRO

20/05/2007 - 05:50 por Orfao | Informe spam
hOLA !
Necesito ayuda para a travez de codigo buscar en el disco la ubicacion de un
libro y luego abrirlo (si existe) o si no crearlo.
tambien me interesa saber como puedo mover un archico de una carpeta a otra
y por ultimo como seleccionar un libro de un combobox desplegable que me
muestre los libros existentes en un ruta especifia.

GRacias
Me alimento del conocimiento de todos

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
20/05/2007 - 06:38 | Informe spam
hola, moises !

__ 1 __
... codigo buscar en el disco la ubicacion de un libro y luego abrirlo (si existe) o si no crearlo.


__ 2 __
... como puedo mover un archico de una carpeta a otra


__ 3 __
... como seleccionar un libro de un combobox desplegable que me muestre los libros existentes en un ruta especifia.



tus consultas no son [lo que dijeramos] un 'endulzame otra manzana' :))

a reserva de que la pregunta 3 no [me] queda muy 'clara' en cuanto a lo que 'realmente' estas solicitando:
- necesitas 'llenar' el combo con los nombres de libros existentes en una ruta especitica ?
- necesitas las instrucciones para abrir el archivo seleccionado desde un combobox ?
- algo que se te hubiera quedado 'en el tintero' -???-

para tus preguntas 1 y 2, te paso algunos tips al final del presente y...
si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

1) si -nada mas- quieres comprobar si existe [o no] en alguna [o cada] unidad logica [C:, D:, E:, ...,] que este disponible...
prueba con el siguente ejemplo, copiando/pegando las lineas en un modulo de codigo general/normal]...
es una API que lee la estructura de archivos [unidad logica] lo que seria la tabla de alojamiento de archivos [FAT]
solo esta 'preparado' para buscar en unidades 'locales', si necesitas buscar en unidades 'desmontables/flash/...'
te incluyo los codigos aplicables para cada tipo de unidad ;)
-> ya despues tu decides la forma de llamar a la busqueda de archivos con algo +/- asi:

Dim Documento As String
Documento = Buscar_archivo(ActiveCell)
If Documento <> "" Then
Workbooks.Open Documento
Else
' aqui tus acciones para crearlo ??? '
End If

== en un modulo de codigo general/normal==Option Private Module
Declare Function Busca_en_FAT Lib "ImageHlp.dll" Alias "SearchTreeForFile" _
(ByVal Unidad As String, ByVal Archivo As String, ByVal Reserva As String) As Long
Function Buscar_archivo(ByVal Archivo As String)
Dim Disco As Object, Unidad As String: Buscar_archivo = ""
With CreateObject("Scripting.FileSystemObject")
For Each Disco In .Drives
If Disco.DriveType = 2 Then
Unidad = Disco.DriveLetter & ":\": Buscar_archivo = Buscar(Unidad, Archivo)
If Buscar_archivo <> "" Then Exit For
End If: Next: End With
End Function
' Tipos para Disco.DriveType _
0 = "Desconocido" _
1 = "Desmontable" _
2 = "Fijo" _
3 = "Unidad de red" _
4 = "CD-ROM" _
5 = "Disco RAM"
Function Buscar(Unidad As String, Archivo As String) As String
Dim Pos As Long, Tmp As Long, Reserva As String: On Error GoTo No_existe
Reserva = Space(260): Tmp = Busca_en_FAT(Unidad, Archivo, Reserva)
Pos = InStr(Reserva, vbNullChar)
If Not Pos Then Reserva = Left(Reserva, Pos - 1)
Buscar = Reserva: Exit Function
No_existe:
End Function

2) para 'mover/copiar' archivos de una ubicacion a otra, puedes usar al menos dos formas:

2-a) una instruccion =>Name "Origen" As "Destino"< -> "Origen" y "Destino" son [una cadena de texto que 'representa'] directorio/s + nombre_archivo + EXT[ension]

a) para renombrar un archivo [mismo directorio] ... los 'requisitos' son ...
(1) que "Origen" EXISTA [y este cerrado] y...
(2) que "Destino" NO EXISTA
[p.e.] Name "C:\Misma ruta\Archivo1.abc" As "C:\Misma ruta\Archivo2.xyz"

b) si "Origen" y "Destino" son 'diferentes'... la instruccion [practicamente] 'hara lo mismo que...'

2-b) una instruccion =>FileCopy "Origen", "Destino"< => en este caso, "Destino" sera INVARIABLEMENTE 'reemplazado' <= OJO

puedes consultar en la ayuda de vba el uso de 'FileCopy' y 'Name'
Respuesta Responder a este mensaje
#2 Orfao
20/05/2007 - 07:14 | Informe spam
Gracias Miguel

pero...
coloque un boton en la hoja1 y le asigne
Private Sub CommandButton1_Click()
Dim Documento As String
Documento = Buscar_archivo(ActiveCell)
If Documento <> "" Then
Workbooks.Open Documento
Else
' aqui tus acciones para crearlo ??? '
End If

y en un modulo nuevo inserte lo demas

en la celda a1 escribo sesiom.xls
cliqueo en el boton y ! NADA!
La aplicacion no responde.

NO ERA ASI ?
Help me ...
Me alimento del conocimiento de todos


"Héctor Miguel" wrote:

hola, moises !

__ 1 __
> ... codigo buscar en el disco la ubicacion de un libro y luego abrirlo (si existe) o si no crearlo.
__ 2 __
> ... como puedo mover un archico de una carpeta a otra
__ 3 __
> ... como seleccionar un libro de un combobox desplegable que me muestre los libros existentes en un ruta especifia.

tus consultas no son [lo que dijeramos] un 'endulzame otra manzana' :))

a reserva de que la pregunta 3 no [me] queda muy 'clara' en cuanto a lo que 'realmente' estas solicitando:
- necesitas 'llenar' el combo con los nombres de libros existentes en una ruta especitica ?
- necesitas las instrucciones para abrir el archivo seleccionado desde un combobox ?
- algo que se te hubiera quedado 'en el tintero' -???-

para tus preguntas 1 y 2, te paso algunos tips al final del presente y...
si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

1) si -nada mas- quieres comprobar si existe [o no] en alguna [o cada] unidad logica [C:, D:, E:, ...,] que este disponible...
prueba con el siguente ejemplo, copiando/pegando las lineas en un modulo de codigo general/normal]...
es una API que lee la estructura de archivos [unidad logica] lo que seria la tabla de alojamiento de archivos [FAT]
solo esta 'preparado' para buscar en unidades 'locales', si necesitas buscar en unidades 'desmontables/flash/...'
te incluyo los codigos aplicables para cada tipo de unidad ;)
-> ya despues tu decides la forma de llamar a la busqueda de archivos con algo +/- asi:

Dim Documento As String
Documento = Buscar_archivo(ActiveCell)
If Documento <> "" Then
Workbooks.Open Documento
Else
' aqui tus acciones para crearlo ??? '
End If

== en un modulo de codigo general/normal==> Option Private Module
Declare Function Busca_en_FAT Lib "ImageHlp.dll" Alias "SearchTreeForFile" _
(ByVal Unidad As String, ByVal Archivo As String, ByVal Reserva As String) As Long
Function Buscar_archivo(ByVal Archivo As String)
Dim Disco As Object, Unidad As String: Buscar_archivo = ""
With CreateObject("Scripting.FileSystemObject")
For Each Disco In .Drives
If Disco.DriveType = 2 Then
Unidad = Disco.DriveLetter & ":\": Buscar_archivo = Buscar(Unidad, Archivo)
If Buscar_archivo <> "" Then Exit For
End If: Next: End With
End Function
' Tipos para Disco.DriveType _
0 = "Desconocido" _
1 = "Desmontable" _
2 = "Fijo" _
3 = "Unidad de red" _
4 = "CD-ROM" _
5 = "Disco RAM"
Function Buscar(Unidad As String, Archivo As String) As String
Dim Pos As Long, Tmp As Long, Reserva As String: On Error GoTo No_existe
Reserva = Space(260): Tmp = Busca_en_FAT(Unidad, Archivo, Reserva)
Pos = InStr(Reserva, vbNullChar)
If Not Pos Then Reserva = Left(Reserva, Pos - 1)
Buscar = Reserva: Exit Function
No_existe:
End Function

2) para 'mover/copiar' archivos de una ubicacion a otra, puedes usar al menos dos formas:

2-a) una instruccion =>Name "Origen" As "Destino"<> -> "Origen" y "Destino" son [una cadena de texto que 'representa'] directorio/s + nombre_archivo + EXT[ension]

a) para renombrar un archivo [mismo directorio] ... los 'requisitos' son ...
(1) que "Origen" EXISTA [y este cerrado] y...
(2) que "Destino" NO EXISTA
[p.e.] Name "C:\Misma ruta\Archivo1.abc" As "C:\Misma ruta\Archivo2.xyz"

b) si "Origen" y "Destino" son 'diferentes'... la instruccion [practicamente] 'hara lo mismo que...'

2-b) una instruccion =>FileCopy "Origen", "Destino"<> => en este caso, "Destino" sera INVARIABLEMENTE 'reemplazado' <= OJO

puedes consultar en la ayuda de vba el uso de 'FileCopy' y 'Name'



Respuesta Responder a este mensaje
#3 Héctor Miguel
20/05/2007 - 07:31 | Informe spam
hola, moises !

1) toma en cuenta que la macro 'anda buscando' [el archivo]... 'a ver si lo encuentra'... por todas las unidades fijas :))
2) la primera vez que se usa la llamada a la API [logicamente] se tomara mas tiempo que las veces siguientes ;)
3) acabo de hacer pruebas 'bajo' las mismas condiciones que planteas...
-> indicando un nombre de archivo que yo se que se encuentra 'por ahi'... en algun lugar de mi DD y...
no problem ! [al final... archivo encontrado y abierto] ;)

-> estas completamente que no hay algun 'error' al escribir el nombre del archivo ? -> "sesiom.xls"
o seria: "sesion.xls" ? [con N en lugar de M] -?-

comentas ?
saludos,
hector.

__ la consulta original __
coloque un boton en la hoja1 y le asigne
Private Sub CommandButton1_Click()
Dim Documento As String
Documento = Buscar_archivo(ActiveCell)
If Documento <> "" Then
Workbooks.Open Documento
Else
' aqui tus acciones para crearlo ??? '
End If
y en un modulo nuevo inserte lo demas
en la celda a1 escribo sesiom.xls
cliqueo en el boton y ! NADA!
La aplicacion no responde.
NO ERA ASI ?
Help me ...
Respuesta Responder a este mensaje
#4 Orfao
20/05/2007 - 08:18 | Informe spam
Sorry, es cierto...
lo que sucede e que se tarda alguito en la busqueda y al presionar ESC el
programa no responde y tengo que cerrarlo..
ahora bien, como averiguo cual es la ruta donde se encontro el archivo
(Para poder Moverlo, renombrarlo, o elimiarlo).???
Y otra preguntica... EN caso de tener el archivo en varias ubicaciones (COmo
POdria seleccionar cual abrir o borrar o mover ???


Me alimento del conocimiento de todos


"Héctor Miguel" wrote:

hola, moises !

1) toma en cuenta que la macro 'anda buscando' [el archivo]... 'a ver si lo encuentra'... por todas las unidades fijas :))
2) la primera vez que se usa la llamada a la API [logicamente] se tomara mas tiempo que las veces siguientes ;)
3) acabo de hacer pruebas 'bajo' las mismas condiciones que planteas...
-> indicando un nombre de archivo que yo se que se encuentra 'por ahi'... en algun lugar de mi DD y...
no problem ! [al final... archivo encontrado y abierto] ;)

-> estas completamente que no hay algun 'error' al escribir el nombre del archivo ? -> "sesiom.xls"
o seria: "sesion.xls" ? [con N en lugar de M] -?-

comentas ?
saludos,
hector.

__ la consulta original __
> coloque un boton en la hoja1 y le asigne
> Private Sub CommandButton1_Click()
> Dim Documento As String
> Documento = Buscar_archivo(ActiveCell)
> If Documento <> "" Then
> Workbooks.Open Documento
> Else
> ' aqui tus acciones para crearlo ??? '
> End If
> y en un modulo nuevo inserte lo demas
> en la celda a1 escribo sesiom.xls
> cliqueo en el boton y ! NADA!
> La aplicacion no responde.
> NO ERA ASI ?
> Help me ...



Respuesta Responder a este mensaje
#5 Orfao
20/05/2007 - 08:22 | Informe spam
Disculpa... pero como tu dices (se me quedo en el tintero...)
otra duda. si el archivo esta en una carpeta oculta ??? funciona igual ??
como identificarlo o como obviarlo ???
GRACIAS.
Me alimento del conocimiento de todos


"Orfao" wrote:

Sorry, es cierto...
lo que sucede e que se tarda alguito en la busqueda y al presionar ESC el
programa no responde y tengo que cerrarlo..
ahora bien, como averiguo cual es la ruta donde se encontro el archivo
(Para poder Moverlo, renombrarlo, o elimiarlo).???
Y otra preguntica... EN caso de tener el archivo en varias ubicaciones (COmo
POdria seleccionar cual abrir o borrar o mover ???


Me alimento del conocimiento de todos


"Héctor Miguel" wrote:

> hola, moises !
>
> 1) toma en cuenta que la macro 'anda buscando' [el archivo]... 'a ver si lo encuentra'... por todas las unidades fijas :))
> 2) la primera vez que se usa la llamada a la API [logicamente] se tomara mas tiempo que las veces siguientes ;)
> 3) acabo de hacer pruebas 'bajo' las mismas condiciones que planteas...
> -> indicando un nombre de archivo que yo se que se encuentra 'por ahi'... en algun lugar de mi DD y...
> no problem ! [al final... archivo encontrado y abierto] ;)
>
> -> estas completamente que no hay algun 'error' al escribir el nombre del archivo ? -> "sesiom.xls"
> o seria: "sesion.xls" ? [con N en lugar de M] -?-
>
> comentas ?
> saludos,
> hector.
>
> __ la consulta original __
> > coloque un boton en la hoja1 y le asigne
> > Private Sub CommandButton1_Click()
> > Dim Documento As String
> > Documento = Buscar_archivo(ActiveCell)
> > If Documento <> "" Then
> > Workbooks.Open Documento
> > Else
> > ' aqui tus acciones para crearlo ??? '
> > End If
> > y en un modulo nuevo inserte lo demas
> > en la celda a1 escribo sesiom.xls
> > cliqueo en el boton y ! NADA!
> > La aplicacion no responde.
> > NO ERA ASI ?
> > Help me ...
>
>
>
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida