Visual Basic - Problemas con FindFirstFile y EXCEL

Life is soft - evento anual de software empresarial
   
Vista:

Problemas con FindFirstFile y EXCEL

Publicado por Diego (11 intervenciones) el 17/07/2008 19:26:39
Hola a todos, mi problema es el siguiente, estoy utilizando el FindFirstFile y el FindNextFile para encontrar archivos de Excel, pero por alguna razon que desconozco al finalizar el programa estos archivos quedan abiertos o sea, no los veo, pero la aplicación Excel queda abierta en segundo plano tantas veces como archivos de Excel halla encontrado.

Agrego que estoy utilizando el FindClose pero no veo resultados, si alguien puede explicarme porque la aplicación queda abierta o como puedo cerrarla para no tener inconvenientes con esos archivos abiertos en segundo plano se lo agrradezco mucho.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con FindFirstFile y EXCEL

Publicado por Diego (11 intervenciones) el 17/07/2008 19:55:36
esto es lo que tengo definido:

'Api FindFirstFile (Busca el primer archivo)
Private Declare Function FindFirstFile _
Lib "kernel32" _
Alias "FindFirstFileA" ( _
ByVal lpFileName As String, _
lpFindFileData As WIN32_FIND_DATA) As Long

'Api FindNextFile (busca el siguiente)
Private Declare Function FindNextFile _
Lib "kernel32" _
Alias "FindNextFileA" ( _
ByVal hFindFile As Long, _
lpFindFileData As WIN32_FIND_DATA) As Long


Private Declare Function FindClose _
Lib "kernel32" ( _
ByVal hFindFile As Long) As Long


Luego lo que hago es esto:


Private Sub Command1_Click()
'Función que busca y lista los ficheros

Dim hSearch As Long ' Handle de busqueda
Dim WFD As WIN32_FIND_DATA

Command1.Enabled = False

'Buscamos el primer archivo en el directorio actual
hSearch = FindFirstFile(".*bobina*.xls", WFD)
'Si no hay nada el handle de busqueda vale -1
If (hSearch <> INVALID_HANDLE_VALUE) And (hSearch <> -1) Then
List1.AddItem WFD.cFileName
Do While (hSearch <> INVALID_HANDLE_VALUE)
'Siguiente archivo
hSearch2 = FindNextFile(hSearch, WFD)
If hSearch2 <> INVALID_HANDLE_VALUE Then
List1.AddItem WFD.cFileName
Else
hSearch = hSearch2
End If
'Cerramos el handle de búsqueda
hSearch2 = FindClose(hSearch2)
Loop
hSearch = FindClose(hSearch)
Else
Respuesta = MsgBox("No hay archivos en el directorio", vbCritical, "XLS to TXT")
End If
hSearch = FindClose(hSearch)
If List1.ListCount > 0 Then
Command2.Enabled = True
End If

End Sub


Y por alguna razón ya me queda Excel abierto en segundo plano tantas veces como archivos halla encontrado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con FindFirstFile y EXCEL

Publicado por igor (633 intervenciones) el 18/07/2008 19:37:46
Hola diego:

Si excel se queda abierto tantas veces como archivos has buscado, ya te digo desde ahora que no puede ser por este código. Debe ser por alguna otra instrucción que hace que el archivo se ejecute, haciendo su correspondiente llamada a excel.

La verdás es que tienes unos cuantos errores en tu código que se pueden resumir en 2.

No hay que utilizar varios hSearch, solo uno.

Además los valores devueltos no los tienes declarados como constantes y como por defecto toman el valor 0 pues te funciona.
' Valores a comprobar
Public Const NO_MORE_FILES = 0
Public Const INVALID_HANDLE_VALUE = -1

Aqui te dejo un código que funciona:

Dim hSearch As Long
Dim Resultado As Long
Dim WFD As WIN32_FIND_DATA
hSearch = FindFirstFile("E:FUENTES*.txt", WFD)
If hSearch <> INVALID_HANDLE_VALUE And hSearch Then
Do
Form1.List1.AddItem WFD.cFileName
Resultado = FindNextFile(hSearch, WFD)
Loop While (Resultado <> NO_MORE_FILES)
Else
Respuesta = MsgBox("No hay archivos en el directorio", vbCritical, "XLS to TXT")
End If
Resultado = FindClose(hSearch)

Como ves solo utilizo un hSearch (manejador). La otra variable es Resultado que se utiliza para guardar lo que devuelve FindNextFile, pero que NO ES UN MANEJADOR !!!
Y el UNICO manejador que tenemos lo cerramos al final.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con FindFirstFile y EXCEL

Publicado por igor (633 intervenciones) el 18/07/2008 23:10:04
Vamos arriba LOLO eres el mejor todos te queremos !!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

LOLO no me abandones!!!!

Publicado por Diego (11 intervenciones) el 17/07/2008 20:19:47
Ya me tiene loco esto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Aquí estoy!!!

Publicado por igor (633 intervenciones) el 18/07/2008 19:44:19
Muy buena lolo, eso es lo que los "expertos" dueños de este foro entendeis por ayudar?

Siempre he pensado que es mejor enseñar a pensar que no enseñar a copiar.

:-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Vamo arriba LOLO!!!

Publicado por Diego (11 intervenciones) el 18/07/2008 22:27:26
Mil gracias, la verdad te pasastes y me sirve mucho de ejemplo para futuras cosas que estoy haciendo, lamentable que exista gente tan engreída que solo este para romper las pelotas en ves de hechar una mano, que es la real idea de este foro, ayudar y no estar mirando que tanto o como se este ayudando sino viendo lo realmente importante que es (como para mi en este momento) el que alguien te heche una mano. Lolo sos un grande. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar