autonumerar v2.0

18/11/2003 - 17:00 por Javier Avila | Informe spam
Hola a todos, saludos!

Tengo una duda (mas que problema), es sobre autonumerar y archivar con
el nombre generado. Ya pude hacer que el complemento autonumerar.xla
genere un numero y que ese numero forme parte del nombre del archivo
(RE_mes-dia-año_NoRecibo.xls) pero tengo la incomodidad de que no puedo
generar un numero por ej: "00001" ya que el generador me pone solo "1" y
los ceros los saca, será que se puede hacer algo sobre eso? una especie
de mascara??? muchas gracias

Javier Avila

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
18/11/2003 - 17:07 | Informe spam
Formato->Celda->Número->Personalizada->Tipo: 00000

Un saludo.


Fernando Arroyo
MS MVP - Excel


"Javier Avila" escribió en el mensaje news:
Hola a todos, saludos!

Tengo una duda (mas que problema), es sobre autonumerar y archivar con
el nombre generado. Ya pude hacer que el complemento autonumerar.xla
genere un numero y que ese numero forme parte del nombre del archivo
(RE_mes-dia-año_NoRecibo.xls) pero tengo la incomodidad de que no puedo
generar un numero por ej: "00001" ya que el generador me pone solo "1" y
los ceros los saca, será que se puede hacer algo sobre eso? una especie
de mascara??? muchas gracias

Javier Avila

Respuesta Responder a este mensaje
#2 Fernando Arroyo
19/11/2003 - 09:19 | Informe spam
Supongo que la celda donde va el número no tiene el formato 00000. Lo más sencillo es que se lo apliques tú usando el código:

Range("D2").NumberFormat = "00000"

Esta instrucción podría ir en cualquier sitio, pero lo más adecuado parece ponerla después de que aparezca el número en la hoja, tras la instrucción Application.Run...


De paso, y solo como sugerencia (porque no pretendo meterme en la forma de programar de los demás), te aconsejo que cualifiques más los rangos. La sintaxis que estás usando en el código es perfectamente válida y funciona sin problemas, pero, por ejemplo,

Range("B2") = Nombre

se refiere a la hoja activa. Está claro que si en el libro no hay mas que una hoja o si el propio código se encarga antes de activar aquélla con la que vas a trabajar (y en este caso no lo hace, por cierto), esta sintaxis funciona bien, pero si alguna vez tienes que insertar más hojas y el código no activa la deseada, podrías encontrarte con comportamientos extraños cuya causa podría ser difícil localizar, dependiendo de la cantidad de código que haya en el procedimiento. Mi consejo, por tanto, es, insisto, cualificar siempre lo más posible. En este caso concreto, por ejemplo (suponiendo que la hoja se llamara Hoja1):

Worksheets("Hoja1").Range("D2").Numberformat = "00000"
Serial = Worksheets("Hoja1").Range("D2")

y más abajo:

With Worksheets("Hoja1")
.Range("B2") = Nombre
.Range("D3") = TC
.Range("B3") = Now()
End With

o incluso podrías poner el With después de la instrucción Application.Run... y el End With después de ActiveSheet.Protect..., con lo que dicha instrucción podría quedar en:

.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="oki"

En cualquier caso repito que lo anterior no es otra cosa que un consejo basado en la experiencia de unos pocos años usando la cosa ésta del Excel :-)
Un saludo.


Fernando Arroyo
MS MVP - Excel



"Javier Avila" escribió en el mensaje news:
me acabo de dar cuenta que cuando llamo al valor "serial" (para crear el nombre del archivo), no lo expresa con el mascara 00000, he aqui mi codigo:

Dim Serial As String
Dim TC As String
Dim Nombre As String

Private Sub workbook_open()
Application.Run "autonumeracion.xla!IncrementarNumeración"
Serial = Range("D2")
Nombre = InputBox("A que nombre el Recibo?", "Nombre")
TC = InputBox("Porfavor, ingrese la TC de hoy", "Tasa de Cambio")
Const strRuta As String = "C:\Documents and Settings\Javier\Escritorio\" 'Directorio donde se almacenarán los libros
Me.SaveAs _
Filename:=strRuta & "RE_" & _
Format(Date, "MMM-dd-yyyy") & "_" & _
Serial, _
FileFormat:=xlWorkbookNormal
Range("B2") = Nombre
Range("D3") = TC
Range("B3") = Now()
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="oki"



End Sub
Respuesta Responder a este mensaje
#3 Fernando Arroyo
19/11/2003 - 19:07 | Informe spam
En el código te faltan los puntos que, dentro de un bloque With...End With, representan el objeto referenciado por el With. En este caso,

Range("D2")

seguiría haciendo referencia a la celda D2 de la hoja activa, aunque la instrucción se encuentre dentro del bloque With...End With, pero

.Range("D2")

significa en realidad

Worksheets("Recibo").Range("D2"")


Sobre lo del formato del número de factura, ten en cuenta que, a pesar de que tú estés viendo en la celda 00001, en realidad el valor de dicha celda sigue siendo 1. Para que en el nombre del libro aparezca este formato y además el mes esté en mayúsculas puedes usar:

Me.SaveAs Filename:=strRuta & "RE_" & UCase(Format(Date, "mmm-dd-yyyy")) & "_" & Format(Serial, "00000"), FileFormat:=xlWorkbookNormal

Un saludo.


Fernando Arroyo
MS MVP - Excel


"Javier Avila" escribió en el mensaje news:
Muchas gracias por el consejo sobre ser mas preciso con los procesos, me
parece absolutamente logico mantener la retaguardia siempre cubierta ;-)
... tengo unas dudas mas:

- El problema del numero sigue sin resolverse, he puesto como me
explicaste el codigo para que la macro "setée" el formato de dicha celda
[Range("D2").NumberFormat = "00000"] pero aun asi me sigue grabando el
nombre sin los 0's.

- Me parecio bastante útil el complemento de autonumeración y decidi
bajarme el otro que maneja mas de un "serial" pero parece que no esta
disponible en el server será que podes mandarmela a mi correo?.

- Será posible que la fecha que obtengo se exprese con el mes en tres
letras mayusculas? por ej. MAY-12-1975 en vez de May-12-1975... ¿cómo?

A continuación el resultado de la optimizacion basado en lo que me
explicaste:

Dim Serial As String
Dim TC As String
Dim Nombre As String

Private Sub workbook_open()
Application.Run "autonumeracion.xla!IncrementarNumeración"
With Worksheets("Recibo")
Range("D2").NumberFormat = "00000"
Serial = Range("D2")
Nombre = InputBox("A que nombre el Recibo?", "Nombre")
TC = InputBox("Porfavor, ingrese la TC de hoy", "Tasa de
Cambio")
Const strRuta As String = "C:\Documents and
Settings\Javier\Escritorio\" 'Directorio donde se almacenarán los libros
Me.SaveAs _
Filename:=strRuta & "RE_" & _
Format(Date, "MMM-dd-yyyy") & "_" & _
Serial, _
FileFormat:=xlWorkbookNormal
Range("B2") = Nombre
Range("D3") = TC
Range("B3") = Now()

ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True, Password:="oki"

End With

End Sub

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida