Resultados 1 al 2 de 2

Tema: Ayuda con excel

  1. #1
    Registrado Avatar de Adonis74
    Fecha de ingreso
    05 ago, 09
    Ubicación
    Varadero Cuba
    Mensajes
    171

    Predeterminado Ayuda con excel

    Hola, un saludo a todos, necesito me ayuden con una macro que me guarde un documento de Excel a una hora determinada todos los días, es un documento que esta abierto constantemente y toma unos valores mediante un link con un software llamado Ion Enterprise en sistema scada a las 12 de la noche. Yo necesito que a esa hora el documento se guarde automáticamente sin cerrarse, ya logré que al guardarlo manualmente se haga en formato html generando un archivo web con el mismo nombre y en el mismo directorio, pero necesito que esta acción de guardar sea automática, conozco la opción de auto-guardar, pero por alguna razón no se me activa y al no aparecerme en los complementos del menú Herramientas no se como activarla manualmente desde el directorio de office donde tengo la instalación.

    En fin, la macro lo que haría seria a las doce de la noche guardar el documento, de lo demás me puedo encargar, pero si la ayuda quiere venir completa pues agradecido, seria entonces guardar a las 12 y crear un archivo en html en el mismo directorio del original.

    Un saludo nuevamente a todos.

  2. #2
    Registrado Avatar de Arielo
    Fecha de ingreso
    07 sep, 06
    Ubicación
    Abya Yala
    Mensajes
    8,152

    Predeterminado Respuesta: Ayuda con excel

    No había visto este tema.
    A ver si te sirve esto:

    En el editor de Visual Basic de la planilla que necesitas grabar (en el ejemplo la llamaremos "Libro1.xls"), ir a la parte del código de ThisWorkbook.

    Allí, crearemos una sub privada, llamada "Workbook_Open()" con el siguiente código:
    Código:
    Private Sub Workbook_Open()
         Application.OnTime TimeValue("00:00:00"), "AutoGrabar"
    End Sub
    Esta sub, se ejecutará automáticamente cada vez que abramos el libro donde esté contenida.
    Lo que hace al ejecutarse, es decirle a Excel que ejecute la macro "AutoGrabar", a las 00:00:00 horas de cada día.

    Luego, en un módulo cualquiera, creamos la sub que se ejecutará, a la que llamamos "AutoGrabar":

    Código:
    Sub AutoGrabar()
    
        If Dir("C:\Libro1.htm") <> "" Then
            Kill "C:\Libro1.htm"
        End If
        ActiveWorkbook.SaveAs Filename:= _
            "C:\Libro1.htm", FileFormat:=xlHtml, ReadOnlyRecommended:= _
            False, CreateBackup:=False
        
        If Dir("C:\Libro1.xls") <> "" Then
            Kill "C:\Libro1.xls"
        End If
        ActiveWorkbook.SaveAs Filename:= _
            "C:\Libro1.xls", FileFormat:=xlNormal, _
            Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
            CreateBackup:=False
    End Sub
    Veamos detalladamente la sub AutoGrabar:
    Código:
        If Dir("C:\Libro1.htm") <> "" Then
            Kill "C:\Libro1.htm"
        End If
    Esta porción de código, hace una comprobación: Si existe el archivo "C:\Libro1.htm"
    En caso de que exista, lo elimina.

    Código:
        ActiveWorkbook.SaveAs Filename:= _
            "C:\Libro1.htm", FileFormat:=xlHtml, ReadOnlyRecommended:= _
            False, CreateBackup:=False
    Aquí, la sub se encarga de guardar la planilla actual, en formato HTML. Si no hubiéramos eliminado este archivo antes, hubiéramos tenido que estar pendiente a esa hora, de confirmar la sobreescritura del archivo, y se hubiera perdido la "gracia" de la macro...

    Luego, vuelve a comprobar si existe un archivo. En este caso, si existe el de formato excel:
    Código:
        If Dir("C:\Libro1.xls") <> "" Then
            Kill "C:\Libro1.xls"
        End If
    Si existe lo elimina...

    y, graba la planilla actual en formato excel:
    Código:
        ActiveWorkbook.SaveAs Filename:= _
            "C:\Libro1.xls", FileFormat:=xlNormal, _
            Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
            CreateBackup:=False
    El motivo por el que primero grabamos el archivo en formato HTML y luego el XLS, es simplemente porque el archivo que quedará abierto será el segundo...

    Espero que te sirva, y no sea tarde ya...





    .
    Rara paradoja de la vida: comúnmente, a militares genocidas se les premia dándoles su nombre a calles, mientras que a científicos que salvan vidas, dándoles su nombre a virus y bacterias ...
    ----------
    El 75% de las personas, deja sin terminar lo que estaba hac

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •