Saltar al contenido

Tiempo de espera para cargar fichero excel


PepeRiv

Recommended Posts

publicado

Muy buenas,

en una macro que estoy desarrollando descargo un fichero excel a través de una aplicación java y tras haber pulsado el botón abrir en la pantalla de dialogo de descarga de archivo llego a una instrucción en la cual tiene

que seleccionar un rango de celdas de este nuevo archivo abierto .

Ocurre que la seleccion la hace sobre el archivo excel que ya estaba

abierto antes, no sobre el nuevo. Para resolverlo intente utilziar la

funcion application.wait y no me funciono (parece que esta funcion

para la ejecución de excel y no llega a cargar mi archivo). Tampoco me

funcionó con la funcion Sleep

La opcion de activar el nuevo libro sería la ideal, pero ocurre que el

nombre del fichero que estoy descargando va variando, tan solo se

repite la primera parte del nombre "40Production......" Esto creo que

me imposibilita poder activar el workbook pasandole por parámetro el

nombre completo del archivo..el cual desconozco.

Saben si existe una instrución como esta para los archivos excel?

Do While Ie.Busy: DoEvents: Loop

Do While Ie.readyState <> 4: DoEvents: Loop

Mi ultimo intento ha sido utilizar la funcion FindWindowLike (creada

por un usuario) y que la he declarado previamente.

Esta funcion me devuelve el handle de la ventana con mi archivo excel;

Sub Check_Excel_Open()

Dim lHandle As Long

Dim Timeout As Date

Timeout = Now + TimeValue("00:00:05")

Do

lHandle = FindWindowLike("ProductionReport")

DoEvents

Sleep 200

Loop Until lHandle Or Now > Timeout

End sub

++++++++++++++++++

Function FindWindowLike(strPartOfCaption As String) As Long

Dim hWnd As Long

Dim strCurrentWindowText As String

Dim r As Integer

hWnd = GetForegroundWindow

Do Until hWnd = 0

strCurrentWindowText = Space$(255)

r = GetWindowText(hWnd, strCurrentWindowText, 255)

strCurrentWindowText = Left$(strCurrentWindowText, r)

'hWnd = GetWindow(hWnd, GW_CHILD)

If InStr(1, LCase(strCurrentWindowText), LCase(strPartOfCaption)) <> 0

Then GoTo Found

hWnd = GetWindow(hWnd, GW_HWNDNEXT)

Loop

Exit Function

Found:

FindWindowLike = hWnd

End Function

++++++++++++++++++++++++++

Cuando ejecuto el codigo de la funcion principal no me esta dando el

resultado esperado, me selecciona las celdas del archivo excel previo

y no de esta ventana nueva (que se supone que ya esta activa..puesto

que ha superado la funcion Check_excel_open()

Sub Copy_production_data(Line As Integer)

Dim Product As String

Dim Eff_Output As Integer

Call Check_Excel_Open

Select Case Line

Case 1 'B1100

Array_Effective_output(iprod) = Range("AN17")

Array_Production_time(iprod) = Prod_time

Array_Product(iprod) = Range("U26")

.....................

Alquien me podria echar una mano??

Espero que me haya explicado bien.

Un saludo grande

Pepe

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.