VBA Excel Guardar Archivo

Necesito hacer una macro que chequee el valor de una celda y que cuando esta tenga un determinado valor (26) guarde el archivo con el valor de otra celda.
Necesito que esta "aplicacion" quede ejecutándose todo el tiempo, o sea desde que se abre el archivo automáticamente la "macro" quede ejecutándose eternamente.
Saluda Atentamente.
Sebastián

1 Respuesta

Respuesta
1
Vale te entendí (eternamente es mucho tiempo) pones esto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address="$A$5" Then 'Cambia tu celda
If Target.Value="25" Then
NombreArchivo=Range("la celda de donde tomar el nombre").Value
ChDir "C:\" 'Aquí y en la siguiente  pones tu directorio donde guardar
    ActiveWorkbook.SaveAs Filename:= _
        "C:\" + NombreArchivo + " .xls", FileFormat:=xlNormal _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
End If
End If
End Sub
>Un saludo
>Julio
PD. Mientras estés en esta hoja (¡OJO! Tienes que cargar la macro en el código de la Hoja y lo quieres en más hojas debes de ponerlas en todas las hojas de tu Libro) estará funcionando "Eternamente", Puntúa y finaliza la consulta.
Estimado, le agradezco la respuesta, el tema es que el valor viene de un OPC Server por lo que el excel no se da cuenta de que cambia el valor, salvo que lo use dentro de una suma y el resultado de esta cambie. Con respecto al activeworkbook. ¿saveas hay alguna forma de que me de cuenta si estoy sobre-escribiendo un archivo?
Probé con un CALCULATE pero tenia problemas al hacer un if con worksheet("hoja1").Range("a2"). value no me deja usar esta expresion para referirme a una celda...
Saluda Atentamente y muchas Gracias!
Primero para que dos archivos de Excel que están en ubiaciones distintas se actualicen si tienen celdas relacionadas, no existe otra forma que cerrar y abrir el libro nuevamente al abrirlo se actualizan los datos. Ten en cuenta que Excel no es un programa multiusuario que se actualiza en tiempo real con una instalación servidor y otra cliente, son instalaciones clientes todas osea que ninguna se instala para ir sirviendo datos a los clientes.
Si tú tienes celdas con valores iguales entre Libro1 y Libro2 si los dos libros están abiertos y modificas los datos en un libro, mientras el otro no lo cierres y vuelvas abrirlo no se actualizan los datos. Es en la apertura del Libro cuando Excel comprueba si los datos de las celdas han sido modificados y te avisará de que se van a actualizar los datos y te pedirá permiso.
Para que te des cuenta al guardar el Libro si ya existe otro con ese mismo nombre en el mismo directorio, el propio Excel te avisa de esta cuestión y te comunica si quieres sobrescribirlo, tan solo pones esta instrucción para que el aviso se produzca:
Application.DisplayAlerts = True
>Un saludo
>Julio
Estimado, perdón por la demora pero es que estuve fuera de la oficina...
Al final lo pude resolver con una función on-time de 1 segundo la cual consulta por una celda con un if, y para guardar el archivo y que no se abra el guardado sino que quede abierto el mismo use:
ActiveWorkbook.SaveCopyAs Filename:=Sheets("Control").Range("B6").Value & "_" & Sheets("Control").Range("C6").Value & "_" & Sheets("Control").Range("D6").Value & "_" & Sheets("Control").Range("B8").Value & "_" & Sheets("Control").Range("B36").Value & "_" & Sheets("Control").Range("B37").Value & "_" & Sheets("Control").Range("B38").Value & ".xls"
Como se puede apreciar el nombre del archivo esta compuesto por varias celdas... lo que no se como hacer es para definir la carpeta donde guardar los archivos y que el nombre siga estando compuesto por las celdas... ahora los archivos los guarda por defecto en "mis documentos" y me gustaría poder cambiar el directorio.
Saluda Atentamente y Muchas Gracias!
Sebastián Pinilla.
Tan solo debes de poner el directorio previamente y después darle nombre al libro como ya estás haciendo, ¡Ojo con el nombre que existe un limite para la longitud en Windows!
Aquí te dejo la página que te informa:
http://support.microsoft.com/kb/148754/es
El codigo es este:
ChDir "C:\Documents and Settings\Usuario\Escritorio"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Documents and Settings\usuario\Escritorio\Sheets("Control").Range("B6").Value & "_" & Sheets("Control").Range("C6").Value & "_" & Sheets("Control").Range("D6").Value & "_" & Sheets("Control").Range("B8").Value & "_" & Sheets("Control").Range("B36").Value & "_" & Sheets("Control").Range("B37").Value & "_" & Sheets("Control").Range("B38").Value & ".xls", FileFormat:=xlNormal _
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas