Jump to content

96andres96

Members
  • Posts

    35
  • Joined

  • Last visited

Everything posted by 96andres96

  1. Muchas gracias a los dos. Ambas respuestas me han servido, pero por sencillez he optado por la de JSDJSD. No obstante, como comenté anteriormente, tengo que tener siempre activa una impresora (de tickets) entonces si le doy a la macro, al crearse el PDF lo hace en el formato de esa impresora. Por tanto, pensé en el inicio de ejecutar la macro poner: Application.ActivePrinter = "Microsoft Print to PDF" Y una vez finalizada la macro, cambiar a la impresora de Tickets, pero me da error. ¿Hay alguna forma de conseguir esto que comento? Gracias.
  2. Aquí adjunto un excel de prueba. Lo que me gustaría es guardar las tablas (en la prueba están vacías) en una única hoja horizontal en PDF. La opción de imprimir que comenta Exceler C no me sirve, ya que tengo que tener una impresora activa todo el rato y no puedo cambiarla por la de Microsoft Print To PDF. Gracias. Prueba.xlsm
  3. Buenas. Quisiera hacer una macro para guardar un rango de celdas en un PDF cuando se cliquee en un botón. La macro en sí, se hacerla. El problema viene en que el rango de celdas seleccionado es grande (no mucho), pero lo suficiente como para que cuando se genere el PDF se guarde en varias hojas. Por tanto, lo que me gustaría que me ayudasen a conseguir es a que la información del rango de celdas se redimensione para que quepa en una única hoja del PDF. ¿Es posible? Gracias.
  4. Gracias, Hector por tu aportación. Al final, como comenté hice mi formulario, así que ya quedó solucionado el tema^^
  5. Buenas tardes. Tengo una macro que selecciona un rango de celdas para imprimir. La macro la tengo en Hoja1 y las celdas que quiero imprimir están en Hoja2. Si coloco la macro en Hoja2 para imprimir, la macro corre bien, sin embargo, si coloco la macro en Hoja1 y la ejecuto desde esa página me salta error. Estoy en Hoja1 y quiero imprimir las celdas de Hoja2 con el siguiente código y me salta error: Sub ImprimirTicket() Sheets("Hoja2").Range("O2:R10").Select Sheets("Hoja2").PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False End Sub Sin embargo, teniendo la macro en Hoja1, si le hago un apaño dirigiéndome a Hoja2 y regresando a Hoja1 funciona la macro. Sub ImprimirTicket() Sheets("Hoja2").Select 'Voy a hoja2 Sheets("Hoja2").Range("O2:R10").Select Sheets("Hoja2").PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False Sheets("Hoja1").Select 'Regreso a la hoja donde tengo la macro, hoja1 End Sub ¿Alguna idea de por qué ocurre esto y cómo podría evitar este apaño de forma más óptima? Gracias.
  6. Buenas tardes. Tengo en excel un macro con el que imprimo un ticket y tras imprimir el ticket automáticamente se abre el cajón portamonedas. El cajón portamonedas he logrado abrirlo a través de las propiedades de la impresora que es de la marca AV Pos modelo P-83. No obstante, me gustaría hacer una macro que abra solo el cajón portamonedas sin necesidad de imprimir. El cajón que tengo es el HS-410. ¿Hay alguna forma de hacer esto? Gracias.
  7. Hice lo que mostraba el artículo, pero no me funcionaba bien. Al final opté por crearme yo mismo un formulario que suple el teclado virtual. Gracias de todos modos ^^
  8. Buenas tardes. Tengo un ordenador Lenovo que es convertible, se puede convertir a tablet. Cuando cambio de pc a tablet y, por ejemplo, voy a Google a buscar algo, se me activa el teclado virtual, ya que el teclado físico no lo puedo usar porque está boca abajo. Pues bien, si voy al excel me gustaría que también se activase. Es decir, que si selecciono una celda me aparezca el teclado virtual para poder escribir sobre ella. ¿Hay alguna forma? Porque por más que he buscado no he encontrado la solución. Gracias.
  9. Buenas tardes. Tengo el siguiente código en una macro: Sub Prueba() hora = Hour(Now) If hora <= 18 & Sheets("Hoja1").Range("G7") = 1 Then MsgBox ("haz esto") ElseIf hora > 18 & Sheets("Hoja1").Range("G7") = 2 Then MsgBox ("haz esto otro") Else MsgBox ("No se cumple") End If End Sub Sin embargo, siempre se me ejecuta el Else aunque a priori se cumplan las condiciones del If. Adjunto el excel de prueba. ¿Alguna idea del por qué no entra en el If ni en el ElseIf? Gracias Prueba.xlsm
  10. Buenas. Tengo dos preguntas sobre el uso de los formularios. Tengo un label con un texto en color negro, y me gustaría darle el color en hex: #731232 sin embargo, no sé cómo aplicarle este color a la letra. Por otro lado, quería saber si hay alguna forma de que los CommandButton tengan bordes redondeados en lugar de rectos. Gracias de antemano.
  11. Gracias por la respuesta. Cambiando lo que me comentaste junto con otro pequeño error que tenía me sale bien ya.
  12. Buenas. Tengo un libro de excel donde dependiendo del valor de unas celdas (Inicio de sesión) quiero que se muestren unas hojas y se oculten otras. Tengo esta macro: If Sheets("Principal").Range("K23") = Sheets("Usuarios").Range("B4") And Sheets("Principal").Range("K24") = Sheets("Usuarios").Range("C4") Then 'Se comprueba usuario y contraseña ''USUARIO1 Dim Hoja As Object For Each Hoja In ActiveWorkbook.Sheets If Hoja.Name = "Inicio1" Then 'Quiero que se vea la hoja Inicio1 Hoja.Visible = True Else Hoja.Visible = False 'Oculta el resto de hojas End If Next Hoja Sin embargo, cuando voy a ejecutar la macro me salta el siguiente error: No se puede asignar la propiedad Visible de la clase Worksheet. He estado leyendo por los foros y sale que puede ser debido a que el libro está protegido, pero en mi caso ni el libro ni ninguna hoja está protegida. ¿Alguna idea? Gracias.
  13. Disculpa por tardar, pero hasta ahora no había podido ponerme con el Excel. Esto era justo lo que necesitaba. Muchísimas gracias!
  14. Buenas. Estoy tratando de obtener los tres primeros k.esimo.mayor de una columna. Lo que sucede es que si tengo valores repetidos, todos toman el primer valor encontrado, es decir. Si tengo Enero 1 Febrero 7 Marzo 3 Abril 7 Mayo 7 Y quiero obtener los tres mayores, debería obtener Febrero, Abril, Mayo. No obstante, cuando uso K.esimo.mayor("rango",k) (donde k=1, 2 o 3), todas me devuelven Febrero ya que se detienen ahí. ¿Cómo puedo solucionar esto? Gracias.
  15. Adjunto un archivo de ejemplo. Para ver todas las hojas el usuario es admin y contraseña 0, pues dependiendo del usuario ingresado cambia el numero de hojas a mostrar. No obstante, como comenté anteriormente, si abre el excel por segunda vez en un corto periodo de tiempo no le pedirá inicio de sesión y entrará automáticamente. Ejemplo.xlsm
  16. Buenas a todos. Tengo un archivo excel que nada mas abrirlo se abre un formulario de inicio de sesión. Mientras este formulario está abierto no se puede ver el archivo de excel, y una vez que se inicia sesión ya se puede acceder al libro. No obstante, la macro me genera dos problemas: 1.El primero de ellos es que cuando abro el libro, es decir, cuando doy dos clicks al archivo de excel, el excel se abre rápidamente, se cierra y ahí me muestra el formulario de inicio de sesión. Pero yo no quiero que funcione así. Yo quiero que al dar dos clicks al archivo de excel directamente se me abra el formulario sin que se abra el excel. 2. Si abro el archivo de excel me pide que inicie sesión, bien. Pero si cierro el inicio de sesión y rápidamente vuelvo a abrir el archivo, en lugar de que me aparezca el formulario para iniciar sesión directamente me entra en el excel. Adjunto un gif del problema y también la macro. Nota: Cuando se ve el bloque azul significa que el excel está abierto. Solo que he colocado un bloque azul porque contiene datos privados. ¿Alguna idea de por qué este error? Gracias de antemano. Saludos. Macro: Private Sub Workbook_Open() Application.Visible = False InicioSesion.Show End Sub InicioSesion es el nombre del formulario. El formulario es sencillo. Simplemente tiene puesto que si el nombre de usuario y contraseña son correctos entonces: Application.Visible = True : 'If nombreusuario = Sheets("Usuario").Range("B3") And passusuario = Sheets("Usuario").Range("C3") Or _ 'nombreusuario = Sheets("Usuarios").Range("B4") And passusuario = Sheets("Usuarios").Range("C4") Then 'Application.Visible = True 'Unload Me 'Else ' MsgBox ("Nombre de usuario o contraseña incorrectos") 'End If nombreusuario es la caja de texto donde el usuario ingresa su nombre de usuario passusuario es la caja de texto donde el usuario ingresa su contraseña GIF: Como se puede ver la primera vez que abro el archivo se abre rápidamente el excel, se cierra y me muestra el formulario. La segunda vez que lo abro se abre el excel directamente y no me pide iniciar sesión.
  17. Buenas tardes. Estoy realizando un ticket de venta, entonces a la hora de imprimir solo quiero imprimir la zona que se ve dentro del recuadro negro que he puesto en el ejemplo. El problema que tengo es que en principio yo no sé la longitud del ticket. Puedo tener en un ticket 5 productos, como tener 2, como tener 100 productos, por tanto el área de impresión cambiaría según la cantidad de productos y no sé cómo hacer eso, ya que yo solo sé establecer un área de impresión fija. Por eso lo que busco es una macro que imprima desde una celda con datos hasta la última celda que tenga datos y que ignore las celdas que le siguen. Espero haberme explicado con claridad. ¿Alguna idea? Gracias. Ejemplo.xlsx
  18. Gracias por responder, Antoni. Al final esta mañana conseguí lo que buscaba. Así que ya no hace falta! Saludos
  19. Buenas tardes. Voy a hacer una especie de caja registradora en excel, y por ello voy a tener en una hoja diferentes macros que corresponden a diferentes productos. Entonces lo que quiero es que al cliquear en el macro del producto pues en una celda aparezca un 1, si vuelvo a cliquar en dicho macro de producto pues el 1 sea un 2, de esta forma pues se sumarán tantos productos como clics haga en la macro. Sin embargo, como la suma tengo que ir haciéndola en una única celda no se me ocurre cómo acumular la suma de los clicks en esa única celda. ¿Alguien sabe y me puede ayudar? Gracias de antemano.
  20. Buenas. Tengo una hoja de excel donde se carga bastante información según el dato inicial introducido por el usuario y estaba pensando en si en lugar de que se vea cómo el excel va generando los datos poco a poco en cada celda si es posible colocar una imagen de carga y una vez que se han obtenido todos los datos pues se muestre el resultado, algo así como cuando accedes a una página web que te sale un flecha dando vueltas hasta que se carga toda la página. ¿Es posible?
  21. Perdona por no responder antes, no había podido pasarme por el foro. Me ha servido, muchas gracias ^^
  22. Buenas tardes. Tengo una macro hecha para que copie los datos de una hoja y los pegue en otra. (nombrehoja1 es una variable que recibe el nombre de la hoja en la que se desea copiar los valores) Adjunto el código: Sub Copiar() Sheets(nombrehoja1).Range("G25").Copy Sheets("Hoja administrador2").Range("A2").PasteSpecial xlValues Application.CutCopyMode = False Sheets(nombrehoja1).Range("G42").Copy Sheets("Hoja administrador2").Range("A3").PasteSpecial xlValues Application.CutCopyMode = False Sheets(nombrehoja1).Range("G59").Copy Sheets("Hoja administrador2").Range("A4").PasteSpecial xlValues Application.CutCopyMode = False Sheets(nombrehoja1).Range("G76").Copy Sheets("Hoja administrador2").Range("A5").PasteSpecial xlValues Application.CutCopyMode = False End Sub Pero tengo dos problemas. El primero es que no es muy eficiente este código, ya que más adelante me gustaría copiar más datos y tendría muchas líneas de código y, a parte, cuando ejecuto la macro puedo ver los valores que va copiando. Es decir, estoy en la hoja A, y en esa hoja tengo la macro. Al activarla veo cómo copia los valores de nombrehoja1 (aun estando en la hoja A). Espero explicarme. Entonces me gustaría saber cómo puedo realizar copias de valores de celdas disjuntas (solo valores, no fórmulas) y pegarlas en otra hoja de manera eficiente y sin que me salga ese error. Gracias de antemano.
×
×
  • Create New...

Important Information

Privacy Policy