Integración de emoticonos en la pestaña de la hoja de Excel
Nain_Porte_Quoi Mensajes publicados 152 Fecha de registro Estado Miembro Última intervención -
Hola, deseo integrar un emoticono (no de Windows, aclaro) al nombre de una hoja de Excel (candado abierto o cerrado). He revisado tutoriales, pero no he encontrado nada que permita realizar esta inserción. Aclaro que no tengo problemas para insertar un emoticono que esté en Windows, ¡pero no puedo hacerlo con otro.
11 respuestas
-
Hola,
Un emoji es un carácter Unicode, por lo que hay que encontrar su número, y Excel fuera de 365 solo lo mostrará en blanco y negro en cualquier caso.
Los valores hexadecimales para el candado abierto y cerrado son U+1F513 y U+1F512 respectivamente y se pueden encontrar buscando "Unicode candado".
El emoji se renderiza con =UNICAR(HEXDEC("1F513"))
-
¡Muchas gracias a ti; BRUCINE!!!
Pero mi problema, como se explicó en mi pregunta, no es hacer aparecer un emoticono en una celda; sino lograr colocarlo en la pestaña de una hoja?????
Existen numerosos tutoriales donde se ve al demostrador realizar esta acción, pero lamentablemente como esta acción no es el tema en cuestión, no hay explicación.
He preguntado a varios, pero desafortunadamente no he recibido respuesta hasta hoy!
Así que, el sentido de mi pregunta es lograr colocar un emoticono en la pestaña (el nombre de la hoja para mí) o enriquecer el panel de Windows, ya que la inserción desde el panel de Windows está bien.
-
No funciona, de hecho, en los nombres de las hojas donde no se puede escribir ninguna fórmula ni copiar nada (porque la solución sería sencilla, en Word ya que Excel no quiere oír hablar de 1F513ALT+C y copiar-pegar).
No parece haber otra solución que a través de macro VBA buscando el carácter por Chr o ChrW en el modo:
Worksheets(1).Name = Chr(50)
El problema, porque tiene que haber uno, es que la sintaxis no admite ciertos caracteres.
Entonces, cito, hay que copiar el carácter deseado en cualquier celda de Excel y luego leer su valor en VBA y concatenar los valores:
https://www.reddit.com/r/excel/comments/6pq1r1/vba_how_can_i_write_emojis_using_chrw/
Pero en cuanto al procedimiento específico, eso supera mis capacidades más que limitadas en VBA.
-
-
-
Hola,
Se obtiene el mismo resultado sin que el emoticono esté ingresado en ninguna celda, colocándolo en el destino (aquí D4), mediante VBA:
Range("D4").Value = ChrW(&HD83D) & ChrW(&HDD12)
La descomposición ChrW se debe a que el Unicode buscado es más alto que el límite de 16 bits.
Los valores de ChrW se obtienen en VBA leyendo el número de caracteres de la cadena que representa el Unicode (aquí 2) y luego aplicando AscW a cada uno de esos caracteres, no me preguntes cómo, pero tú que eres sabio...
En cualquier caso, la misma sintaxis no funciona para ActiveSheet.Name, lo que no resuelve directamente el problema.
-
-
Hola,
partiendo de la idea de danielc0 y de la solicitud inicial, creo que el objetivo sería mostrar este candado cerrado o abierto según ??? el estado de la protección de la hoja/del libro/otro? Todo ello en VBA, seguramente.
-
¡Muchas gracias a todos!
Simplemente voy a ocultar las hojas; después de haberlas bloqueado.
Creo que será lo más sencillo; porque el VBA y yo somos dos cosas que son incompatibles.
Otra vez, gracias a ustedes
-
¡Muchas gracias a todos!
-
Hola a todos,
Hasta donde sé, VBA no puede detectar el cambio del estado protegido a desprotegido o viceversa. Así que no es una posibilidad.
Daniel
-
¡Entonces, para todos, solo un pequeño recordatorio! Mi solicitud original era cómo colocar un candado cerrado (????) en una pestaña de una hoja de Excel.
Solo para informar al usuario de la hoja de cálculo que no debía intervenir en esa hoja, después de muchos visionados de tutoriales, hay personas que logran colocar un emoticono en la pestaña de una hoja de Excel ?????????????????.
Eso es lo que deseaba realizar de manera simple; pero después de toda la información recibida de su parte, he decidido bloquear y ocultar todas las celdas de las hojas correspondientes y luego he ocultado dichas hojas; por lo tanto, si las hojas no son visibles, los errores son imposibles, y los intentos de modificaciones también se eliminan!
(en principio??)
¡Eso es todo lo que buscaba hacer!; pero bueno, mi solución no es quizás tan mala, ya que las hojas no son visibles!!
¿No????
¡Nuevamente, muchas gracias a todos ustedes!
GILLES
-
-
Hola,
No es fácil todo esto, pero gracias por su respuesta con su solución, así ayuda mucho a quienes están en el mismo caso que usted en el foro.
Usted es un supergilou.
Cordialmente.
Hola,
Para seguir luchando por poco, la cocina ilustrada en <13> resulta de que VBA no puede leer un carácter de más de 16 bits.
El truco consiste entonces en determinar la longitud de la cadena de caracteres (2 o más), determinar el valor de cada fragmento y reensamblar.
En el ejemplo que nos interesa (candado cerrado) me limité a copiar servilmente estos valores (-10179 y -8942), pero suponiendo que quisiéramos aplicar el procedimiento a otro Unicode de más de 16 bits, habría que recalcular.
Se encuentran diferentes técnicas, algunas enrevesadas, las más simples aquí respectivamente en 10 y en 3.
https://stackoverflow.com/questions/55418398/how-do-i-remove-emojis-from-an-excel-sheet-using-vba/55418901#55418901https://stackoverflow.com/questions/73853790/how-to-check-the-value-of-%CE%A3-character-in-an-excel-cell-vba
El problema es que soy un verdadero desastre con VBA, no encuentro dónde y cómo escribir estos códigos para que funcionen (y que tal vez en al menos uno de los casos puedan aplicarse no a ActiveCell sino a la celda que contiene el Unicode, por ejemplo D4).
Gracias.
-
-
Hola Brucine,
No entiendo mucho sobre Unicode y aún menos sobre cómo llegas de un valor hexadecimal a un valor decimal negativo...
Además, según algunas pruebas e investigaciones, he encontrado que los valores negativos pueden ser reemplazados por valores positivos y dar los mismos resultados (yo no entiendo)
ejemplo
ChrW(-10179) puede ser reemplazado por ChrW(55357)
Es cierto que estamos luchando por "poco", pero sigue siendo interesante entender.
-
Hola,
55357 es la diferencia entre 65536 (límite de 16 bits) y 10179, lo que explica por qué su hija es muda.
ChrW (en realidad AscW para el propósito buscado) devolvería un valor negativo (que equivale a lo mismo) cuando el número entero fuente no está firmado.
https://www.vbforums.com/showthread.php?797751-RESOLVED-AscW-returns-negative-value
Pero lo que yo sigo sin entender, no importa si el valor es positivo o negativo ya que llevará al mismo resultado, es cómo obtener los valores en cuestión al partir un Unicode que es superior al límite de 16 bits y que, por tanto, contiene al menos dos cadenas sobre las que realizar estos cálculos.
-
-
Re Brucine,
gracias por la explicación de la diferencia entre lo positivo y lo negativo, aunque la frase me parece extraña "explicando por qué tu hija es muda."
Si he entendido bien tu "incomprensión", este pequeño código simplificado debería aclararte.
Option Explicit Sub test() Dim Car_Debut As String Dim Car_Fin As String Dim Val_Debut As Integer Dim Val_Fin As Integer Const Cell_Source As String = "D4" Car_Debut = Left(Range(Cell_Source), 1) Car_Fin = Right(Range(Cell_Source), 1) Val_Debut = AscW(Car_Debut) Val_Fin = AscW(Car_Fin) ActiveSheet.Name = ChrW(Val_Debut) & ChrW(Val_Fin) End Sub
Introduce tu carácter unicode en la celda D4 (puedes cambiarlo en el código) y ejecuta el procedimiento "test".
-
Quise decir que importa el artefacto que conduce a valores negativos, en el caso de que existan, es probable que AscW realice la operación por sí mismo restando 65536.
Como D4 está ocupado por uno de los candados, he puesto en D6 una rosa (1F339, ¿por qué no?) y tu script conduce efectivamente al resultado deseado sin descomponer 1F339.
Supongo (nuevamente no entiendo nada) que tu sintaxis Option Explicit permitió la ejecución de la macro donde otras que he probado con el mismo efecto no funcionan.
También supongo, no he intentado mostrarlas, que Car_Debut y Car_Fin realizan esa famosa descomposición?
-
-
Options explicit es una instrucción que obliga a declarar las variables, nada más.
https://learn.microsoft.com/es-es/office/vba/language/reference/user-interface-help/option-explicit-statement
El unicode está compuesto en realidad de 2 caracteres, Car_Debut el primero y Car_Fin el segundo, luego recupero el valor de cada carácter para recomponerlo y ponerlo en el nombre de la hoja.
Lo cual es bastante complicado ya que el nombre de la hoja ahora contiene 2 caracteres


