none
Cambiar formato de texto de una columna de excel via Script ActiveX RRS feed

  • Pregunta

  • Buenas,

    Tengo una macro en Excel 2010 que me cambia el formato de unas columnas, que funciona bien.

    La intento ejecutar como un script ActiveX en un paso de un trabajo que ejecuta diariamente, pero me da el siguiente error:

    No se pudo tener acceso al archivo...compruebe que el archivo no esté abierto por otro programa, que no haya otro fichero que se llame igual...

    Obviamente las causas que me dice SQL(2014) las he comprobado y están todas bien, también decir que si no encontrara el archivo me diría "no se encontró el archivo..." por lo que la ruta también está OK. Las credenciales del agente que ejecuta el paso son las del administrador de la máquina...

    ¿Se os ocurre algo más que hacer?

    Muchas gracias

    jueves, 16 de febrero de 2017 10:21

Respuestas

  • Porque no intentas hacerlo en powershell? de esa forma lo pruebas en el servidor y te quitas el lio del script.

    El propio powershell podría lanzar el resto del paquete después.

    Se que no es la solución que esperas pero el debuging de estas cosas es tremendamente complejo.

    Solo una observación. para que este código funcione, Excel ha de estar instalado en el server..


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    martes, 21 de febrero de 2017 16:34
    Moderador

Todas las respuestas

  • Asegurate que el agente tiene los permisos necesarios. o crea un proxy con usuario que si los tenga, por ejemplo con el que estás probando

    También asegúrate de las versiones 32 y 64 bits. igual va con una y no con otra


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA


    lunes, 20 de febrero de 2017 18:02
    Moderador
  • Muchas gracias Miguel,

    Se que de los permisos no es, porque utilizo un agente con permiso para todos y el fichero esta "creado" por el mismo agente.

    En cuanto a 32 o 64 bits, no estoy muy seguro pero creo que no puedo hacer nada porque lo ejecuto como "paso" de un "trabajo" tipo ActiveX, VB Script, por lo que solo pongo el código y no llama a ningún paquete.

    Lo que estoy empezando a dudar es del código, lo pego a continuación:

    Function Main() 
    'on error resume next 
    
    dim File_name 
    dim Macro_name 
    dim ExcelObject 
    
    'Put Speardsheet name that you want to open 
    File_name="E:\datos\rrhh\Rrhh_Master2.xlsm" 
    'Put Macro name that you want to run 
    Macro_name="formato_texto" 
    'Do you want to save your workbook 
    Save_Flag=True 
    
    Set ExcelObject=Createobject("Excel.application") 
    ExcelObject.Workbooks.Open File_name 
    ExcelObject.Run (macro_name) 
    if Save_Flag then 
    ExcelObject.Workbooks(1).Save 
    Else 
    ExcelObject.Workbooks(1).Close (Save_Flag) 
    End if 
    
    if err.number<>0 then 
    ExcelObject.Workbooks(1).Close (False) 
    End if 
    ExcelObject.Application.Quit 
    Set ExcelObject=nothing 
    Main = DTSTaskExecResult_Success
    End function
    Gracias por todo

    martes, 21 de febrero de 2017 14:41
  • Porque no intentas hacerlo en powershell? de esa forma lo pruebas en el servidor y te quitas el lio del script.

    El propio powershell podría lanzar el resto del paquete después.

    Se que no es la solución que esperas pero el debuging de estas cosas es tremendamente complejo.

    Solo una observación. para que este código funcione, Excel ha de estar instalado en el server..


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    martes, 21 de febrero de 2017 16:34
    Moderador
  • Muchas gracias Miguel,

    Lo pruebo como dices y comento después...

    martes, 21 de febrero de 2017 16:51
  • Te sirvió? cerramos el hilo?

    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    lunes, 27 de febrero de 2017 14:51
    Moderador