Macro que me genere un contador de factura asignándole un numero a cada una de las facturas

Tengo una macro que me genera un contador de factura pero al guardar dicha factura en un archivo del pc cada vez que abro ese archivo me suma un número más en la relación de facturas. Entonces esa macro no me sirve. Necesito una macro que cuando yo guarde la factura quede registrada con su numero inamovible y que en la plantilla que yo tengo de excel de factura me sume la siguiente factura. Esta es la macro que uso, pero claro cuando guardo la factura me incrementa un numero en cada una de ellas, tanto en la plantilla como en la factura que guardo en el pc.

Private Sub Workbook_Open()
Range("E3").Value = Range("E3").Value + 1
ThisWorkbook. Sabe

1 respuesta

Respuesta
4

H o l a:

Y si guardas tu factura pero sin macros.

¿Tienes una macro para guardar la factura?

¿O quieres una macro que incremente el número de factura solamente cuando guardas la factura?

En ese caso pon la siguiente macro en un módulo:

Sub GuardarFactura()
'Por.Dante Amor
    Set h = Sheets("factura")           'nombre de la hoja con la factura
    ruta = ThisWorkbook.Path & "\"      'ruta donde se guardan las facturas
    numfac = h.Range("E3")              'número de factura
    h.Copy                              'Copia la hoja en un nuevo libro
    ActiveWorkbook.SaveAs ruta & "Factura " & numfac    'guarda la factura
    ActiveWorkbook.Close                'cierra el nuevo libro
    h.Range("E3") = h.Range("E3") + 1   'incrementa el número de factura
    ThisWorkbook.Save                   'guardar la plantilla
End Sub

Lo que hace es guardar una hoja como un nuevo libro sin macros, después incrementa el número de factura y guarda también la plantilla.

Tienes que quitar la macro que tienes Workbook_Open


Avísame cualquier detalle que necesites.


':)
S a l u d o s . D a n t e A m o r
':) Si es lo que necesitas. Recuerda valorar la respuesta. G r a c i a s.

En primer lugar gracias por atenderme tan rápido. He copiado tal cual la macro y la he pegado en un modulo y no me la acepta me sale un mensaje que dice "Subíndice fuera del intervalo". Otro mensaje me dice "Se ha producido el error "9" en tiempos de ejecución. Anteriormente he borrado todo, pero no me deja instalar la macro. Saludos

No sé que es lo que he hecho pero funciona la macro, a medias, ya que cuando abro nuevamente el libro no me suma automáticamente el numero de facturas, que es lo que debería hacer, sino que se queda registrado con el numero de la factura anterior realizada.

Entonces también deja esta macro en los eventos de Thisworkbook

Private Sub Workbook_Open()
Range("E3").Value = Range("E3").Value + 1
ThisWorkbook.Save
End Sub

' : )
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
' : )

Buenos dias, Dante. No me funciona nada, no sé.

A ver, esta la macro que me guarda la factura en un archivo del pc, lo guarda perfectamente pero cada vez que abro ese archivo me suma un número más de factura, eso no puede ser, ya que por ejemplo, tengo la plantilla con el numero 34 y en el archivo del pc si lo abro me suma la nº 35, y así sucesivamente.

Sub archivo()
nbre = Format(Now, "dd-mm-yy hh mm ss")
ruta = "C:\Users\ANTONIO\Desktop\ARCHIVO FACTURAS"
ActiveWorkbook.SaveCopyAs ruta & "\" & nbre & ".xls"
End Sub

Esta otra macro me borra los datos de la factura que ya he realizado y así poder borrar la factura anterior que esta guardada, me funciona correctamente ya que le he puesto un botón. Esto si funciona como yo quiero.

Sub BORRAR()
'
' BORRAR Macro
' MACRO QUE BORRA LOS DATOS DE UNA FACTURA
'

'
Selection.ClearContents
Range("I9:K9").Select
Selection.ClearContents
Range("I10:K10").Select
Selection.ClearContents
Range("I11:K11").Select
Selection.ClearContents
Range("I12:K12").Select
Selection.ClearContents
Range("I13:K13").Select
Selection.ClearContents
Range("I14:K14").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=12
Range("B19:K65").Select
Selection.ClearContents
Range("H21").Select
ActiveWindow.SmallScroll Down:=42
Range("J67:K67").Select
Selection.ClearContents
Range("J68:K68").Select
Selection.ClearContents
Range("J69:K69").Select
Selection.ClearContents
Selection.ClearContents
End Sub

Y esta otra macro es la que me suma un numero mas en la factura pero me lo hace mal, ya que al guardar la factura en un archivo sigue sumando el numero tantas veces como lo abra y en la plantilla no lo suma.

Private Sub Workbook_Open()
Range("E3").Value = Range("E3").Value + 1
ThisWorkbook.Save

No sé si podrás solucionarme el problema, porque aparte de esto tengo más preguntas, pero poco a poco..

Saludos desde España

H o l a:

Para solucionar el primer punto. Debes guardar el archivo sin macros.

Tu primera macro tiene esta instrucción:

ActiveWorkbook.SaveCopyAs ruta & "\" & nbre & ".xls"

Por eso te envié una nueva macro para guardar sin macros.

Utiliza la siguiente macro, pero antes de ejecutarla, tienes que cambiar en esta línea:

Set h = Sheets("factura"), la palabra "factura" por el nombre de tu hoja que contiene la factura

Sub GuardarFactura()
'Por.Dante Amor
    Set h = Sheets("factura")           'nombre de la hoja con la factura
    ruta = ThisWorkbook.Path & "\"      'ruta donde se guardan las facturas
    ruta = "C:\Users\ANTONIO\Desktop\ARCHIVO FACTURAS"
    nbre = Format(Now, "dd-mm-yy hh mm ss")
    h.Copy                              'Copia la hoja en un nuevo libro
    ActiveWorkbook.SaveAs ruta & "\" & nbre
    ActiveWorkbook.Close                'cierra el nuevo libro
End Sub

Con la macro anterior te guarda el archivo sin macros, entonces el nuevo archivo lo puedes abrir y cerrar y el número de factura ya no cambiará.


Punto uno solucionado.


Cada que abras y cierres el archivo con la plantilla de facturas se incrementará el número.

Si todavía tienes problemas con lo anterior, envíame tu archivo de facturas y adapto las macros.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Ramón Díez” y el título de esta pregunta.

Avísame en esta pregunta cuando me lo hayas enviado.


Para las siguientes peticiones. Con mucho gusto te ayudo con todas tus peticiones.

Crea una nueva pregunta en todoexpertos, en el tema de microsoft excel, en el desarrollo de la pregunta escribe: "para Dante Amor", ahí me describes con detalle lo que necesitas.

Sal u dos


':)
S a l u d o s . D a n t e A m o r
':) Si es lo que necesitas. Recuerda valorar la respuesta. G r a c i a s.

Te anexo la macro actualizada

Sub GuardarFactura()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h = Sheets("FACTURA")           'nombre de la hoja con la factura
    'ruta = ThisWorkbook.Path
    ruta = "C:\Users\ANTONIO\Desktop\ARCHIVO FACTURAS"
    nbre = Format(Now, "dd-mm-yy hh mm ss")
    h.Copy                              'Copia la hoja en un nuevo libro
    For Each obj In ActiveSheet.DrawingObjects
        Select Case obj.Name
        Case "Button 1", "Button 2": obj.Delete
        End Select
    Next
    ActiveWorkbook.SaveAs ruta & "\" & nbre
    ActiveWorkbook.Close                'cierra el nuevo libro
    Application.ScreenUpdating = True
    MsgBox "Factura guardarda"
End Sub

R ecuerda cambiar la valoración a la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas