Iniciar un shell y mantener el control en Excel

pivecleyrac Mensajes publicados 8 Estado Miembro -  
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   -
Hola,
Busco actualizar un archivo de Excel al abrirlo.
Estoy en un servidor dolibarr, donde gestiono una base de tarifas de artículos, y tengo un archivo Excel que obtiene las tarifas. Pero no he conseguido conectarme a la base de datos, así que he creado un archivo PHP en mi sitio que crea un archivo .csv en mi directorio de descargas.
Al abrir mi archivo de Excel, abro con shell el archivo PHP a través de Chrome.
El problema es que pierdo el control de Excel, y por tanto ya no puedo continuar automáticamente con mi macro.
Aquí está mi macro:
Sub Lance_Tarif() Dim navigate As String navigate = "https://el nombre de mi sitio/excel.php" Shell "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe " & navigate, 0 ..... la macro continúa End Sub


Si alguien tiene alguna sugerencia, se lo agradecería.
Gracias de antemano.
Christophe

7 respuestas

  1. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   Ambassadeur 1 588
     
    hola, ¿quieres decir que la macro se detiene esperando a que Chrome termine?
    0
  2. pivecleyrac Mensajes publicados 8 Estado Miembro
     
    Hola y gracias por interesarte en mi pregunta.
    No, la macro continúa, desafortunadamente, pero la ventana de Chrome se vuelve activa y el resto.
    Lo digo desafortunadamente, porque me gustaría que la macro esperara a que termine el proceso de descarga del archivo .csv antes de continuar. He puesto una espera con Application.Wait (Now + TimeValue("0:00:09")), pero dependiendo de la velocidad de la conexión, a veces no es lo suficientemente largo.
    Gracias de antemano.
    0
    1. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
       
      supongo que tu macro va obtener datos del archivo cargado, y que por eso quieres esperar. ¿es eso?
      tal vez sea posible que la macro verifique que el archivo esté presente o sea reciente antes de continuar?
      0
  3. pivecleyrac Mensajes publicados 8 Estado Miembro
     
    Sí, efectivamente, el archivo que creo permite recuperar datos.
    Estará ausente hasta que lo cree, lo elimino al final de mi macro.
    para probar la presencia, ¿hacemos un do while?
    0
  4. pivecleyrac Mensajes publicados 8 Estado Miembro
     
    Gracias por estas informaciones, hice:
    While Fs.FileExists("monfichier.txt") <> True Application.Wait (Now + TimeValue("0:00:01")) Wend

    parece que funciona.

    Como expliqué en mi primer mensaje, mi macro abre Chrome para descargar el archivo. Me gustaría hacerlo en segundo plano, y mantener el control en Excel. Para la definición del Shell me ayudé de esta página https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/shell-function
    pero al poner 0 o 6 no cambia nada...

    Dim navigate As String navigate = "https://le nom de mon site/excel.php" Shell "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe " & navigate, 0
    0
    1. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
       
      ¿Qué quieres decir con “mantener el control”? ¿Quieres que Excel esté en primer plano?
      Creo que es Chrome quien pasa solo a primer plano, incluso si está iniciado sin estarlo.
      0
  5. pivecleyrac Mensajes publicados 8 Estado Miembro
     
    Sí, es perfectamente así. Entonces, ¿es posible?
    0
    1. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
       
      No creo que podamos pedirle a Chrome que se mantenga discreto.
      0
      1. pivecleyrac Mensajes publicados 8 Estado Miembro > yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención  
         
        Efectivamente parece complicado, gracias por tu ayuda.
        0
      2. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588 > pivecleyrac Mensajes publicados 8 Estado Miembro
         
        ¿Puedes marcar la discusión como resuelta?
        0
  6. Chris_33000 Mensajes publicados 533 Estado Miembro 48
     
    hola,
    ¿podrías abrir la aplicación en modo reducido?
    ej.: start /min "" "" "C:\Windows\notepad.exe"
    Atentamente,
    0
  7. pivecleyrac Mensajes publicados 8 Estado Miembro
     
    Hola Chris_33000
    Gracias por tu respuesta.
    no encuentro cómo escribir la función start. ¿Podrías decirme dónde la encuentro, gracias de antemano?
    Atentamente.
    0
    1. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588 > Chris_33000 Mensajes publicados 533 Estado Miembro
       
      ¿Lo has probado con Chrome?
      0
    2. Chris_33000 Mensajes publicados 533 Estado Miembro 48 > yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención  
       
      no tengo Chrome... Lo probé con IE, eso es todo:
      start /min "" "" "C:\Program Files\Internet Explorer\iexplore.exe"
      0
    3. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588 > Chris_33000 Mensajes publicados 533 Estado Miembro
       
      buena idea, @Chris_33000, parece que esto funciona:
      Shell "C:\Program Files\Internet Explorer\iexplore.exe", vbMinimizedNoFocus 
      ,
      supongo que
      Shell "C:\Program Files\Internet Explorer\iexplore.exe " & navigate , vbMinimizedNoFocus 

      hará lo que pivecleyrac pide.
      0
    4. pivecleyrac Mensajes publicados 8 Estado Miembro > yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención  
       
      Casi perfecto, señores, una pequeña pregunta más: el comando
      Shell "C:\Program Files\Internet Explorer\iexplore.exe" & navigate , vbMinimizedNoFocus
      abre una ventana para preguntarme si quiero abrir o guardar el archivo. ¿Es posible obligar al archivo a que se guarde? ¿Tal vez en PHP?
      Gracias de antemano.
      0