Automatizar Excel

Como están
Mi duda es la siguiente tengo un modelo de factura en excel y la quiero hacer la más automática posible.
1- Quiero que al presionar un botón (para ejecutar la macro) o al abrirla factura se cree un nuevo numero de la misma por ejemplo numero de factura a-20091123 y al abrir o ejecutar la macro se cree la factura numero a-2009124.
2- Quiero que tenga guardado automático y que cuando se guarde cree una carpeta dentro de una que tengo llamada facturas en mis documentos con el nombre del cliente.

1 Respuesta

Respuesta
1
Se me ocurre una solución muy simple
1.- Crea un Archivo donde almacenes el último folio y mediante una macro que se ejecute cuando abras tu factura lo vas actualizando.
2.-Entra al editor de VBA en excel (ALT+F11) y al Objeto ThisWorkBook le agregas el siguiente código
Private Sub Workbook_Open()
    Autoexec 'Manda llamar a la macro AutoExcec
End Sub
3.- En tu achivo de la Factura pones el siguiente código son 2 macros AutoExcec y ActualizaFactura. Luego agrega un Botón al cual le asignas la macro ActualizaFactura
Sub Autoexec()
Dim nNumFolio As Integer
' Macro para Crear una copia del libro actual y aumentar el folio
    'Se Abre el libro de folios Puede tener contraseña para evitar problemas
    Workbooks.Open Filename:="C:\Documents and Settings\USUARIO\Mis Documentos\Facturas\Libro de Folio.xls"
    nNumFolio = Range("D3").Value + 1 'Aquí se guarda el último folio
    Range("D3").Value = nNumFolio ' Se actualiza el folio
    ActiveWorkbook.Save 'Se guardan los cambios
    ActiveWindow.Close 'Se Cierra el libro de folios
    'Se seleciona la celda donde se escribira el folio actual
    Range("F3").Value = nNumFolio
End Sub
Sub ActualizaFactura()
    On Error GoTo Err_ActualizaFactura
    Dim sNombreCliente As String
    Dim sRutaParaLaCopia As String
'Se almacena el nombre del cliente si es que no esta vacio
    If Trim(Range("C4").Value) <> "" Then
        sNombreCliente = Range("C4").Value
        sRutaParaLaCopia = "C:\Documents and Settings\USUARIO\Mis Documentos\Facturas\" & sNombreCliente
        nNumFolio = Range("F3").Value
        ChDir sRutaParaLaCopia
        ActiveWorkbook.SaveAs Filename:=sRutaParaLaCopia & "\Factura No" & nNumFolio & ".xls" _
        , FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    Else
        MsgBox "No ha escrito el nombre del cliente", vbCritical
    End If
Exit_ActualizaFactura:
    Exit Sub
Err_ActualizaFactura:
    If Err.Number <> 0 Then
        If Err.Number = 76 Then ' Esto sirve por si la carpeta no existe la crea
            MkDir sRutaParaLaCopia
            Resume
        Else
            MsgBox "Se produjo el error No " & Err.Number & " Descripción: " & Err.Description & " Originado por: " & Err.Source, vbCritical
            Resume Err_ActualizaFactura
        End If
    End If
End Sub
Espero que esto te sirva, si no es así no dudes en volver a contactarme.
Gracias Amigo
He escrito el código tal y como me lo recomendaste pero al dar clic en el botón actualizar factura sale un error que dice "no se puede ejecutar el código en modo de interruccion"
Y me señala la parte del código donde se encuentra "MkDir sRutaParaLaCopia"
Que es la parte donde crea la carpeta si no existe.
Desearía que me ayudaras en la solución de este problema.
Ha como nota:
utilizo windows seven en version starter y no se si la ruta de guardado sea diferente
Pero inclusive la cambie un poco acá supongo que quede asy "C:\Usuarios\user\Mis Documentos\Facturas\Libro de Folio.xls" ya que en este windows no esta a palabra documents and settings.
En cambio esta la palabra bibliotecas pero esto si entro a mis documentos desde el menu inicio por que entrando desde equipo- disco c si es la ruta que te coloco arriba.
Te agradezco tu comprensión y ayuda.
[email protected]
Tienes razón es ruta sale porque uso el Win XP. Pero para que resuelvas más fácil tu problema usa una ruta distinta a la de las carpetas del sistema de esa manera tu Macro funcionará en cualquier S.O.
Por ejemplo Crea tu carpeta de facturas directamente sobre la unidad raíz "C:\"
Cualquier otra duda me comentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas