Discussion:
Cambiar valor al imprimir
(demasiado antiguo para responder)
Cesar H
2005-12-07 17:31:42 UTC
Permalink
Apreciados Colegas:

Necesito que me ayuden a mirar si lo que pretendo hacer es posible y es lo
siguiente:

Tengo una plantilla en Excel y necesito que cada vez que imprima ese formato
me aumente el valor en una celda. Es decir; la celda A1 contiene el valor
"1" al imprimir el formato ese número se aumente en 1 y quede "2" y así
suscesivamente... será esto posible?

Agradezco de antemano la ayuda.
David
2005-12-07 17:56:04 UTC
Permalink
César, prueba agregar lo siguiente a los eventos del libro:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Hoja1" Then ActiveSheet.Range("A1").Value =
ActiveSheet.Range("A1").Value + 1
End Sub

PD: Estoy suponiendo que sólo quieres incrementar el contador cuando
imprimas la hoja llamada "Hoja1"...
Post by Cesar H
Necesito que me ayuden a mirar si lo que pretendo hacer es posible y es lo
Tengo una plantilla en Excel y necesito que cada vez que imprima ese formato
me aumente el valor en una celda. Es decir; la celda A1 contiene el valor
"1" al imprimir el formato ese número se aumente en 1 y quede "2" y así
suscesivamente... será esto posible?
Agradezco de antemano la ayuda.
KL
2005-12-07 18:23:40 UTC
Permalink
Hola chicos,

Solo una cosa a tener en cuenta al utilizar la solucion de David - el evento Workbook_BeforePrint se disparara igualmente (y el
contador aumentara) tanto si se imprime algo como si simplemente se abre la Vista Preliminar sin que sea necesario imprimir nada.
Una alternativa podria ser la de crear una serie de macros que inhabilten los procedimientos habituales de impresion y permitan
imprimir pulsando un boton especialmente creado para este caso. Incluso, se podria crear un UserForm que emularia el dialogo de
impresion. Comentais si esto es lo que hace falta?

Saludos,
KL
Post by David
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Hoja1" Then ActiveSheet.Range("A1").Value =
ActiveSheet.Range("A1").Value + 1
End Sub
PD: Estoy suponiendo que sólo quieres incrementar el contador cuando
imprimas la hoja llamada "Hoja1"...
Post by Cesar H
Necesito que me ayuden a mirar si lo que pretendo hacer es posible y es lo
Tengo una plantilla en Excel y necesito que cada vez que imprima ese formato
me aumente el valor en una celda. Es decir; la celda A1 contiene el valor
"1" al imprimir el formato ese número se aumente en 1 y quede "2" y así
suscesivamente... será esto posible?
Agradezco de antemano la ayuda.
Cesar H
2005-12-07 20:10:51 UTC
Permalink
Es cierto KL, cuál sería la manera completa de hacerlo con el UserForm como
tu dices, en caso de que no sea posible intentaré adaptar la solución de
David que también es muy buena.
Post by KL
Hola chicos,
Solo una cosa a tener en cuenta al utilizar la solucion de David - el
evento Workbook_BeforePrint se disparara igualmente (y el contador
aumentara) tanto si se imprime algo como si simplemente se abre la Vista
Preliminar sin que sea necesario imprimir nada. Una alternativa podria ser
la de crear una serie de macros que inhabilten los procedimientos
habituales de impresion y permitan imprimir pulsando un boton
especialmente creado para este caso. Incluso, se podria crear un UserForm
que emularia el dialogo de impresion. Comentais si esto es lo que hace
falta?
Saludos,
KL
Post by David
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Hoja1" Then ActiveSheet.Range("A1").Value =
ActiveSheet.Range("A1").Value + 1
End Sub
PD: Estoy suponiendo que sólo quieres incrementar el contador cuando
imprimas la hoja llamada "Hoja1"...
Post by Cesar H
Necesito que me ayuden a mirar si lo que pretendo hacer es posible y es lo
Tengo una plantilla en Excel y necesito que cada vez que imprima ese formato
me aumente el valor en una celda. Es decir; la celda A1 contiene el valor
"1" al imprimir el formato ese número se aumente en 1 y quede "2" y así
suscesivamente... será esto posible?
Agradezco de antemano la ayuda.
alberto corrales
2005-12-07 19:51:02 UTC
Permalink
HOLA... haber si esto te puede ayudar... en la celda A1 es donde tienes tu
numero "1" en la celda B1 (EJEMPLO) puedes poner la formula =A1+1 eso te dara
el incremento de 1 en 1 despues crea un boton y dale una macro como esta...

Sub Macro1()
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range("B1").Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub


Lo que hara es imprimir y despues copiar el incremento de la celda B1 a la
celda A1 solo en valor... y cada vez que oprimas tu boton se incrementara de
uno en uno.


espero y te haya ayudado....
Cesar H
2005-12-07 20:09:32 UTC
Permalink
Al probar con tu ejemplo me sale error de sintaxis y me deja en color rojo
todo lo siguiente:

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Post by alberto corrales
HOLA... haber si esto te puede ayudar... en la celda A1 es donde tienes tu
numero "1" en la celda B1 (EJEMPLO) puedes poner la formula =A1+1 eso te dara
el incremento de 1 en 1 despues crea un boton y dale una macro como esta...
Sub Macro1()
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range("B1").Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Lo que hara es imprimir y despues copiar el incremento de la celda B1 a la
celda A1 solo en valor... y cada vez que oprimas tu boton se incrementara de
uno en uno.
espero y te haya ayudado....
KL
2005-12-07 20:17:27 UTC
Permalink
Hola Cesar,

Esto pasa porque la linea del codigo se ha roto al transmitir el mensaje atraves de la Web. Prueba sustituir el fragmento mencionado
con esto:

Selection.PasteSpecial _
Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False

o esto:

Selection.PasteSpecial xlPasteValue

o esto:

Selection.PasteSpecial Paste:=xlPasteValue

o bien esto:

Selection.PasteSpecial xlPasteValues, xlNone, False, False

Saludos,
KL
Post by alberto corrales
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Post by alberto corrales
HOLA... haber si esto te puede ayudar... en la celda A1 es donde tienes tu
numero "1" en la celda B1 (EJEMPLO) puedes poner la formula =A1+1 eso te dara
el incremento de 1 en 1 despues crea un boton y dale una macro como esta...
Sub Macro1()
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range("B1").Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Lo que hara es imprimir y despues copiar el incremento de la celda B1 a la
celda A1 solo en valor... y cada vez que oprimas tu boton se incrementara de
uno en uno.
espero y te haya ayudado....
Cesar H
2005-12-07 20:27:59 UTC
Permalink
Perfecto KL!!!!, funciono....pero, mira que cuando voy a la vista prliminar
no se incrementa el contador...es decir que este es el codigo que necesito,
verdad?

Mil gracias a todos!!!
Post by KL
Hola Cesar,
Esto pasa porque la linea del codigo se ha roto al transmitir el mensaje
Selection.PasteSpecial _
Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False
Selection.PasteSpecial xlPasteValue
Selection.PasteSpecial Paste:=xlPasteValue
Selection.PasteSpecial xlPasteValues, xlNone, False, False
Saludos,
KL
Post by Cesar H
Al probar con tu ejemplo me sale error de sintaxis y me deja en color
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Post by alberto corrales
HOLA... haber si esto te puede ayudar... en la celda A1 es donde tienes tu
numero "1" en la celda B1 (EJEMPLO) puedes poner la formula =A1+1 eso te dara
el incremento de 1 en 1 despues crea un boton y dale una macro como esta...
Sub Macro1()
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range("B1").Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Lo que hara es imprimir y despues copiar el incremento de la celda B1 a la
celda A1 solo en valor... y cada vez que oprimas tu boton se
incrementara de
uno en uno.
espero y te haya ayudado....
KL
2005-12-07 20:43:18 UTC
Permalink
Hola Cesar,

Si, es una de las posibles soluciones (la mas facil). Dado que el hecho de actualizar el contador en este caso esta asociado al
evento Click del boton y no al evento BeforePrint del Libro, obviamente el contador no se actualizara ni cuando vayas a la Vista
Previa ni cuando imprimas tu hoja usando el menu Archivo>Imprimir o el atajo de teclas correspondiente o el boton Imprimir desde la
Vista Previa.

Saludos,
KL
Perfecto KL!!!!, funciono....pero, mira que cuando voy a la vista prliminar no se incrementa el contador...es decir que este es el
codigo que necesito, verdad?
Mil gracias a todos!!!
Post by KL
Hola Cesar,
Esto pasa porque la linea del codigo se ha roto al transmitir el mensaje atraves de la Web. Prueba sustituir el fragmento
Selection.PasteSpecial _
Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False
Selection.PasteSpecial xlPasteValue
Selection.PasteSpecial Paste:=xlPasteValue
Selection.PasteSpecial xlPasteValues, xlNone, False, False
Saludos,
KL
Post by alberto corrales
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Post by alberto corrales
HOLA... haber si esto te puede ayudar... en la celda A1 es donde tienes tu
numero "1" en la celda B1 (EJEMPLO) puedes poner la formula =A1+1 eso te dara
el incremento de 1 en 1 despues crea un boton y dale una macro como esta...
Sub Macro1()
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range("B1").Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Lo que hara es imprimir y despues copiar el incremento de la celda B1 a la
celda A1 solo en valor... y cada vez que oprimas tu boton se incrementara de
uno en uno.
espero y te haya ayudado....
Cesar H
2005-12-07 21:02:03 UTC
Permalink
Muy cierto KL lo tendre en cuenta.
Post by KL
Hola Cesar,
Si, es una de las posibles soluciones (la mas facil). Dado que el hecho de
actualizar el contador en este caso esta asociado al evento Click del
boton y no al evento BeforePrint del Libro, obviamente el contador no se
actualizara ni cuando vayas a la Vista Previa ni cuando imprimas tu hoja
usando el menu Archivo>Imprimir o el atajo de teclas correspondiente o el
boton Imprimir desde la Vista Previa.
Saludos,
KL
Post by Cesar H
Perfecto KL!!!!, funciono....pero, mira que cuando voy a la vista
prliminar no se incrementa el contador...es decir que este es el codigo
que necesito, verdad?
Mil gracias a todos!!!
Post by KL
Hola Cesar,
Esto pasa porque la linea del codigo se ha roto al transmitir el mensaje
Selection.PasteSpecial _
Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False
Selection.PasteSpecial xlPasteValue
Selection.PasteSpecial Paste:=xlPasteValue
Selection.PasteSpecial xlPasteValues, xlNone, False, False
Saludos,
KL
Post by Cesar H
Al probar con tu ejemplo me sale error de sintaxis y me deja en color
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Post by alberto corrales
HOLA... haber si esto te puede ayudar... en la celda A1 es donde tienes tu
numero "1" en la celda B1 (EJEMPLO) puedes poner la formula =A1+1 eso te dara
el incremento de 1 en 1 despues crea un boton y dale una macro como esta...
Sub Macro1()
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range("B1").Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Lo que hara es imprimir y despues copiar el incremento de la celda B1
a la
celda A1 solo en valor... y cada vez que oprimas tu boton se incrementara de
uno en uno.
espero y te haya ayudado....
alberto corrales
2005-12-07 20:30:02 UTC
Permalink
Asi es KL... Cesar solo con darle la tecla [Supr] al final del renglon donde
dice "SkipBlanks_ " y con eso te ayudara a juntar todo y evitar el error de
sintaxi


espero y te haya ayudado
Cesar H
2005-12-07 20:38:03 UTC
Permalink
Por supuesto Alberto... Mil gracias de verdad que este foro me ha sido muy
útil...los felicito!
Post by alberto corrales
Asi es KL... Cesar solo con darle la tecla [Supr] al final del renglon donde
dice "SkipBlanks_ " y con eso te ayudara a juntar todo y evitar el error de
sintaxi
espero y te haya ayudado
Loading...