Saltar al contenido

Imprimir Tickets y abrir cajón de dinero desde un userform


RHPTRADICIONAL

Recommended Posts

Que tal, buen día

Tengo poco conocimiento en el lenguaje VB, pero con los aportes de cada uno de los usuarios en esta página he creado un pequeño punto de venta en excel utilizando un userform.

Por más de que busqué el tema de imprimir y abrir cajón de dinero desde userform no he encontrado lo que requiero, espero si se pueda.

Estás son las dos preguntas que tengo:

¿Es posible (estando en un userform) abrir el cajón de dinero (conectado a la impresora) presionando un botón?

¿Es posible (estando en un userform) imprimir un ticket generado en excel (con impresora térmica usb, conectada a la computadora) presionando un botón?

Mi punto de venta es muy sencillo, tiene dos botones al principio en una hoja de excel

Al presionar el botón "mostrador" sale el punto de venta dónde se ingresan la venta de cada producto al momento de que ya se se terminó el ingreso de datos, presionamos el botón "aceptar" (es aquí dónde quiero que me abra el cajón de dinero)

En la hoja principal de excel existe otro botón llamado "reparto" aquí es dónde yo genero una especie de nota de venta (en una hoja de excel (AI,AL)) con los datos del cliente al que se le llevan los kg del "producto 1". Me gustaría saber si es posible que la impresora de tickets imprima esa pequeña nota de venta creada en excel. Si, si se puede en este userform he puesto un botón llamado "imprimir nota" (es dónde me gustaría algún código para mandar a imprimir)

En caso de que no pueda imprimir desde excel, me gustaría saber que solución le puedo dar.

Aquí dejo el link de la impresora y el cajón del dinero que compraré (ficha técnica de cada producto)

Kit Punto Venta Full Business Impresora Cajon Dinero Busin - $ 2,199.00 en MercadoLibre

De antemano, muchas gracias.

EJEMPLO PUNTO DE VENTA.rar

Enlace a comentario
Compartir con otras webs

Mañana te digo como imprimir el ticket y abrir el cajón desde Excel.

Los $ 2.199.- ¿ Son dolares USA ?

Si es así, háztelo enviar desde España, lo puedes conseguir todo por menos de $ 500.-

cajon monedero: productos cajon monedero | Pixmania España

impresora de tickets: productos impresora de tickets | Pixmania España

GARMIN Lector código de barras CCD 80mm Z-3110 USB Negro | Pixmania España

Se trata de una empresa sería y de reconocido prestigio en Europa.

De hecho yo he comprado varias cosa y jamás he tenido el mas mínimo problema.

Saludos

Enlace a comentario
Compartir con otras webs

Mañana te digo como imprimir el ticket y abrir el cajón desde Excel.

Los $ 2.199.- ¿ Son dolares USA ?

Si es así, háztelo enviar desde España, lo puedes conseguir todo por menos de $ 500.-

cajon monedero: productos cajon monedero | Pixmania España

impresora de tickets: productos impresora de tickets | Pixmania España

GARMIN Lector código de barras CCD 80mm Z-3110 USB Negro | Pixmania España

Se trata de una empresa sería y de reconocido prestigio en Europa.

De hecho yo he comprado varias cosa y jamás he tenido el mas mínimo problema.

Saludos

Hola Marco Antonio, muchas gracias por tu ayuda, en verdad he buscado por todos lados y no he encontrado la manera.

Gracias también por los datos de cajones de dinero e impresoras, los $2,199.00 son en Pesos Mexicanos, algo así como $170USD

Saludos desde México.

Enlace a comentario
Compartir con otras webs

Hola:

Punto 1, las impresoras matriciales de punto de venta van, habitualmente conectadas al puerto LPT1.

Punto 2, las impresoras matriciales no están controladas por windows, por lo que funcionan a la "antigua", es decir en modo "tonto", hay que decirle en todo momento lo que queremos hacer, el tipo de letra, el espaciado, el avance, de línea, ....etc.

Eso se consigue mediante un lenguaje llamado ESP/P.

ESP/P son un conjunto de comandos que hay que enviar junto con el texto a imprimir, o simplemente para saltar una línea.

Los comando ESC/P son interpretados por la impresora y no son impresos.

En el adjunto encontrarás los comandos ESC/P para una impresora EPSON, pero son prácticamente el standard de ESC/P.

También encontrarás 4 macros a modo de ejemplo de como se imprimiría un ticket, como se abriría el cajón y como se cortaría el papel del ticket.

No son ejemplos teóricos, son ejemplos reales que han estado funcionando durante mas de 5 años en un comercio de calzado en España, y han funcionado en Excel 2003, Excel 2007 y Excel 2010.

Cualquier duda, no dudes en preguntar.

Saludos

Imprimir y abrir cajón.xls

Enlace a comentario
Compartir con otras webs

Hola:

Punto 1, las impresoras matriciales de punto de venta van, habitualmente conectadas al puerto LPT1.

Punto 2, las impresoras matriciales no están controladas por windows, por lo que funcionan a la "antigua", es decir en modo "tonto", hay que decirle en todo momento lo que queremos hacer, el tipo de letra, el espaciado, el avance, de línea, ....etc.

Eso se consigue mediante un lenguaje llamado ESP/P.

ESP/P son un conjunto de comandos que hay que enviar junto con el texto a imprimir, o simplemente para saltar una línea.

Los comando ESC/P son interpretados por la impresora y no son impresos.

En el adjunto encontrarás los comandos ESC/P para una impresora EPSON, pero son prácticamente el standard de ESC/P.

También encontrarás 4 macros a modo de ejemplo de como se imprimiría un ticket, como se abriría el cajón y como se cortaría el papel del ticket.

No son ejemplos teóricos, son ejemplos reales que han estado funcionando durante mas de 5 años en un comercio de calzado en España, y han funcionado en Excel 2003, Excel 2007 y Excel 2010.

Cualquier duda, no dudes en preguntar.

Saludos

Muchas gracias Marco Antonio.

Veo que son dos códigos uno para abrir cajón y otro para imprimir, los pondré cada uno con su botón correspondiente y los probaré, hoy mismo me entregan el cajón del dinero y la impresora.

Mañana te mantengo al tanto de como funcionó todo.

Gracias de nuevo, saludos!

Enlace a comentario
Compartir con otras webs

Hola Marco Antonio

Apenas contesto, ya que me acaba de llegar el equipo para imprimir y el cajón.

Ya conecté todo a la computadora, instalé el controlador de la miniprinter etc.

Ahora, la verdad como explicaba al principio he creado este pequeño sistema a prueba y error, no tengo mucho conocimiento de como programar en vb. Leí tus códigos y les entendí perfectamente, ya hasta modifiqué el de impresión utilizando el código ASCII para los acentos, etc.

Ahora, lo que a mi me hace lógica (no se si esté mal) es copiar el código dentro del código del botón de comando que yo tengo, sin el "private sub" del principio y el "end sub" del final.

Primero lo probé con mi botón de comando "aceptar" para abrir el cajón y me aparece un error que dice: " se ha producido un error '52' en tiempo de ejecución:"

Nombre o número de archivo incorrecto.

Y al probar el código para imprimir me aparece un error en líneas más abajo (me imagino por la línea que dice: "on error resume next")

El error me dice: "error de compilación" No se ha definido Sub o Function

Espero me puedas ayudar por favor.

Gracias de antemano

Enlace a comentario
Compartir con otras webs

Hola Marco después de revisar la impresora me di cuenta que no manda la señal para imprimir, ya que le daba imprimir hoja de prueba y no mandaba nada, ahora me doy cuenta que no funcionaba con LPT1, busqué como instalarla correctamente y el puerto para que funcione es el: USB001 virtual printer port for USB

espero sirva de algo esta información, muchas gracias

Enlace a comentario
Compartir con otras webs

sustituye:

Open "LPT1" For Output As #P [/CODE]

por:

[CODE]
P=1
Open "COM1" For Output As #P
[/CODE]

si no funciona:

[CODE]
P=2
Open "COM2" For Output As #P
[/CODE]

No sería necesario cambiar el valor de la variable P. Puedes definirla como constante con valor 1.

y así hasta dar con el puerto COM donde has conectado la impresora

Enlace a comentario
Compartir con otras webs

Hola.

Para saber en que puerto esta instalada una impresora, buscamos esta en impresoras y faxes (win xp), la seleccionamos y en sus propiedades vemos en que puerto esta instalada.

Saludos amigos.

Hola, buen día

En un comentario pasado publiqué lo que aparece en las propiedades de la impresora:

Puerto: USB001

Descripción: Virtual printer for USB

Impresora: El nombre que le di a la impresora

He puesto ese nombre del puerto en el código pero no funciona (USB001)

Adjunto una imagen de captura de pantalla.

Muchas gracias

- - - - - Mensaje combinado - - - - -

Disculpen sino me expliqué bien, primero la impresora si estaba conectada al puerto LPT1, pero como no respondía desde las propiedades de la impresora (mandaba a imprimir hoja de prueba y no imprimía nada) Busqué en internet y hay que cambiarla de puerto al puerto USB001 como aparece en la captura de pantalla.

Gracias

post-120776-145877006561_thumb.jpg

Enlace a comentario
Compartir con otras webs

Tuve que instalar la impresora como genérica para que se instale en el puerto LPT1

Corrí el código modificado como me lo pasó Marco A. la última vez e imprimió perfecto, solo tengo que darle formato al ticket.

Ya quedó listo, muchas gracias por su ayuda

- - - - - Mensaje combinado - - - - -

Hola, solo tengo una duda

En el código para imprimir vienen dos lineas que no se cuál es su función, me podrían decir por favor, ya que si las dejo o las borro, el ticket imprime igual.

Muchas gracias.

Este es el código:

Print #P, Chr(27) & Chr(64); 'ESC@

Print #P, Chr(27) & Chr(33) & Chr(0); 'ESC!;

Enlace a comentario
Compartir con otras webs

  • 1 year later...
  • 2 months later...
  • 2 years later...
En 6/12/2012 at 13:30 , Macro Antonio dijo:

Hola:

Punto 1, las impresoras matriciales de punto de venta van, habitualmente conectadas al puerto LPT1.

Punto 2, las impresoras matriciales no están controladas por windows, por lo que funcionan a la "antigua", es decir en modo "tonto", hay que decirle en todo momento lo que queremos hacer, el tipo de letra, el espaciado, el avance, de línea, ....etc.

Eso se consigue mediante un lenguaje llamado ESP/P.

ESP/P son un conjunto de comandos que hay que enviar junto con el texto a imprimir, o simplemente para saltar una línea.

Los comando ESC/P son interpretados por la impresora y no son impresos.

En el adjunto encontrarás los comandos ESC/P para una impresora EPSON, pero son prácticamente el standard de ESC/P.

También encontrarás 4 macros a modo de ejemplo de como se imprimiría un ticket, como se abriría el cajón y como se cortaría el papel del ticket.

No son ejemplos teóricos, son ejemplos reales que han estado funcionando durante mas de 5 años en un comercio de calzado en España, y han funcionado en Excel 2003, Excel 2007 y Excel 2010.

Cualquier duda, no dudes en preguntar.

Saludos

Imprimir y abrir cajón.xls

Buenas tardes Sr. Macro Antonio, seria ud tan amable de subir nuevamente el archivo Imprimir y abrir cajon ya que el link que aparece no funciona.  Saludos

Enlace a comentario
Compartir con otras webs

Manual de ESC/P

Ejemplo de macro para imprimir un ticket:

Línea, Código y PVP son los arrays que contienen las líneas de venta

 

Private Sub ImprimirTicket()

'Abrir e inicializar impresora
Open "LPT1" For Output As #1
Print #1, Chr(27) & Chr(64);

'Cabecera del ticket
Print #1, Chr(27) & Chr(33) & Chr(0);
Print #1, Chr(10);

Print #1, Chr(27) & Chr(33) & Chr(16); Chr(27) & Chr(33) & Chr(32);
Print #1, " ZAPATERIA TRIS-TRAS";
Print #1, Chr(10);

Print #1, Chr(27) & Chr(33) & Chr(0);
Print #1, "       CALZADO INFANTIL";
Print #1, Chr(10);
Print #1, Chr(10);

Print #1, Chr(27) & Chr(77) & "1";
Print #1, Chr(27) & Chr(33) & Chr(1);
Print #1, "Plaza Chavi"; Chr(160); "n"; ", Bloque 3, Local 4";
Print #1, Chr(10);

Print #1, "15220 Bertamir"; Chr(160); "ns";
Print #1, Chr(10);

Print #1, "T.666666666";
Print #1, Chr(10);

Print #1, "NIF: 99999999X";
Print #1, Chr(10);
Print #1, Chr(10);

Print #1, Chr(27) & Chr(33) & Chr(16); Chr(27) & Chr(33) & Chr(32);
Print #1, Space(3); "TICKET N"; Chr(167); ":"; NúmeroTicket;
Print #1, Chr(10);

Print #1, Chr(27) & Chr(33) & Chr(0);
Print #1, Chr(10);

Print #1, "LIN  CÓDIGO PVP";
Print #1, Chr(10);

'Cuerpo del ticket
For X = 1 To UBound(Línea)
   Print #1, Línea(X) & " ";
   Print #1, Código(X) & " ";
   Print #1, PVP(X) & " ";
   Print #1, Chr(10);
Next

'Cortar ticket
Print #P, Chr(27) & Chr(64); Chr(29) & "V1";

'Abrir cajón
Print #1, Chr$(27); "p"; Chr$(0); Chr$(100); Chr$(250);

'Cerrar impresora
Close #1
End Sub

 

Imprimir ticket.xlsm

Enlace a comentario
Compartir con otras webs

  • 2 weeks later...

DIFINITIVAMENTE MACRO ANTONIO ES EL MEJOR Respecto ala programacion visual en este foro, con razon tanta envidia de parte de algunos compañeros como el tal yoel monsalve, de venezuela,, q vine a darme cuenta q es muy joven , un niño,, con un futuro potencial, pero enfocado en eventos negativos, como buscar ser el primero ante todo, disfruta con el solo hecho de ver a macro por debajo de el,, jaja,, siempre me pdeia q le calificara pronto y de todo lo q el colocase,  me parecio gracioso lo q me expresaba este joven, le agradezco por q me trato de ayudar en mi proyecto,, pero solo logro fue atrasarme,, hasta estuve a punto de pagarle pues el chico se esforzo, pero le quedo un poco grande algunos detalles, y en ves de buscar soluciones, trato de salir por la puerta facil,, 

 cuando macro antonio se digno a colaborarme en pocas respuestas  resolvio casi todo mi problema..

gracias

Enlace a comentario
Compartir con otras webs

Estimado Lug Barry, creo que este no es el medio adecuado para dirimir diferencias en lo personal conmigo. Este portal se trata exclusivamente de asuntos relacionados con la programción VBA/Excel.

Haces señalamientos de tipo "enfocado a eventos negativos", "es muy joven", "es un niño": E incluso poniendo en duda mi capacidad profesional. No voy responderte en cuánto tus opiniones personales hacia mi, ya que son tuyas, pero agradezco por favor y encarecidamente retires todo señalamiento dirigido a cuestionar mi integridad profesional y competencia en el campo que aquí se refiere de la programación VBA/Excel.

No viene al caso, y no tienes ninguna prueba ni fundamento para lo que dices. Tengo años de experiencia en la progrmación en mi haber (por haber empezado desde muy joven en ello), y para lo cual te remito a todas mis otras participaciones en el foro.

Entonces en conclusión, ten todas las opiniones y diferencias que quieras en lo personal conmigo (son tuyas, las respeto), pero no vengas a tratar de afectar la integridad de mi trabajo con ello.

Si quieres trabajar asesorado por otro usuario como Antonio o quién sea, también estás en tu derecho.

=============================================================

P.D. Ya reporté este mensaje tuyo a la administración, y solicitando sea eliminado.

Enlace a comentario
Compartir con otras webs

Hace 15 horas, YoelMonsalve dijo:

Estimado Lug Barry, creo que este no es el medio adecuado para dirimir diferencias en lo personal conmigo. Este portal se trata exclusivamente de asuntos relacionados con la programción VBA/Excel.

Haces señalamientos de tipo "enfocado a eventos negativos", "es muy joven", "es un niño": E incluso poniendo en duda mi capacidad profesional. No voy responderte en cuánto tus opiniones personales hacia mi, ya que son tuyas, pero agradezco por favor y encarecidamente retires todo señalamiento dirigido a cuestionar mi integridad profesional y competencia en el campo que aquí se refiere de la programación VBA/Excel.

No viene al caso, y no tienes ninguna prueba ni fundamento para lo que dices. Tengo años de experiencia en la progrmación en mi haber (por haber empezado desde muy joven en ello), y para lo cual te remito a todas mis otras participaciones en el foro.

Entonces en conclusión, ten todas las opiniones y diferencias que quieras en lo personal conmigo (son tuyas, las respeto), pero no vengas a tratar de afectar la integridad de mi trabajo con ello.

Si quieres trabajar asesorado por otro usuario como Antonio o quién sea, también estás en tu derecho.

=============================================================

P.D. Ya reporté este mensaje tuyo a la administración, y solicitando sea eliminado.

q casualidad yo tambien lo reporte, pues eres una mascara, disces unas cosas en privado y aqui estas como palomita,, madura,, maduro,, no ganas nada trantando de hacer disputas de quien sabe mas  con macro antonio,, amigo el  sr macro maneja mas codigo q vos,,  mas bien descansa q estas como enfermo,,,

Enlace a comentario
Compartir con otras webs

Estimado @Lug Barry, sus dos mensajes anteriores ya fueron reportados a Administración.

Usted está quedando muy mal con esa actitud, cese sus ataques o pediré sea suspendido.

Su participación en nada ayuda a esta comunidad, sólo se dedica a pedir ayuda de los colaboradores, y cuando no se la dan, instigar conflictos y rivalidades entre los participantes.

No cometeré el error de dejarme arrastrar a este juego en contra del amigo Antonio, cada uno de nosotros tiene qué aportar en su campo, y no es el foro para protagonizar peleas.

Le pido que recapacite, o sino que lo suspendan.

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Hi Trate de ver que hacían las fórmulas en cuestión pero a su libro le falta o le faltan hojas, por lo que solo podría participar con un par de ideas en general. Lo que entiendo es que según el valor de B3 en C3 debe poner una fórmula u otra, así que es posible que si combina DIRECCION() con INDIRECTO() pueda intercambiar de una fórmula a otra. =SI(B3="Xl",INDIRECTO(DIRECCION(3,5)),SI(O(B3=1,B3=2,B3=3),INDIRECTO(DIRECCION(4,5)),"")) Otra forma sería poner nombre a esas fórmulas en el cuadro de nombres para que las pueda mandar llamar a una o a la otra según el resultado de B3. Por favor tome en cuenta, es solo una idea.
    • Buenas tardes! Tengo el siguiente código: Private Sub btnCargaBancos_Click() Dim TasaCompra, TasaVenta As Double Dim InvBanesco, InvVzla, MontoBanesco, MontoVzla As Double Dim TasaDiaBan, TasaDiaVzla, TasaActual As Double 'Inversion = Val(txtInversion.Text) InvBanesco = Val(CDbl(txtInverBanesco.Text)) InvVzla = Val(CDbl(txtInverVzla.Text)) TasaCompra = Val(CDbl(txtTasaCompra.Text)) TasaVenta = Val(CDbl(txtTasaVenta.Text)) MontoBanesco = (InvBanesco / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) MontoVzla = (InvVzla / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) TasaDiaBan = (MontoBanesco / InvBanesco) * (1 - 0.055)      TasaDiaVzla = (MontoVzla / InvVzla) * (1 - 0.055) If TasaDiaBan < TasaDiaVzla Then     TasaActual = TasaDiaBan Else     TasaActual = TasaDiaVzla End If MontoBanesco = FormatNumber(MontoBanesco, 2, True, vbFalse) MontoVzla = FormatNumber(MontoVzla, 2, True, vbFalse) TasaActual = FormatNumber(TasaActual, 5, True, False) txtBcoBanesco.Value = MontoBanesco txtBcoVenezuela.Value = MontoVzla txtTasaDiaria.Value = TasaActual End Sub   Como se puede apreciar InvBanesco ,  InvVzla , TasaCompra y TasaVenta, son valores que introduce el usuario a través de los respectivos cuadros de texto. Tengo los siguientes problemas: a. Las fórmulas no se ejecutan correctamente (pareciese que no reconociese los números entrados vía cuadros de texto). b. Al darle valor cero (0) a cualquiera de los valores de InvBanesco o  InvVzla, me genera un error en TasaDiaBan o TasaDiaVzla (según sea el caso), aunque, como se puede apreciar, debería generar un valor cero (0). Como dije en mi presentación estoy empezando en esto de la codificación...y quiero aprender de Uds! Agradezco su ayuda! Nota: lamentablemente el fichero es mas grande de lo permitido y no pude anexarlo.  
    • Hola buenas tardes. En una hoja plantilla donde realizo diferentes consultas de datos. tengo ya establecido dos formulas diferentes con función SI y buscar. estos buscan diferentes rangos de datos y recibendiferentes resultados. Cada formula varia según una palabra o numero  ejemplo si pongo Xl pone la formula 1 y si pongo cualquier numero entre 1 y 3 pone la segunda formula. Lo que necesito hacer es que si en una celda de la columna B3 pongo XL debería de considerar la formula 1 y si pusiera el numero 1 me pondría la segunda formula, dentro de la misma formula. Ya agregue la función SI($C3="Xl",Formula1.. Pero no me funciona, espero me puedan ayudar.   Muchas gracias Mariano   Formula doble si en celda existe.xlsx
    • Sub control2558() Application.ScreenUpdating = False Dim I As Integer I = 4 While Sheets("FT-ADF-2558").Cells(I, 102) <> "" Sheets("FT-ADF-2558").Cells(6, 82) = Sheets("FT-ADF-2558").Cells(I, 102) Dim NombreArchivo, RutaArchivo As String NombreArchivo = "Hoja Control " & Sheets("FT-ADF-2558").Cells(I, 102) RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".xlsm" Dim NuevoLibro As Workbook Set NuevoLibro = Workbooks.Add Sheets("FT-ADF-2558").Copy Before:=NuevoLibro.Sheets(1) NuevoLibro.SaveAs Filename:=RutaArchivo NuevoLibro.Close I = I + 1 Wend MsgBox ("Proceso generado con éxito") Application.ScreenUpdating = True End Sub  
    • Ese error es porque no existe la hoja 10 con ese nombre, entonces cámbialo por FT-ADF-2558
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.