18 Sep Cómo crear un código QR en Excel
¿Cómo crear un código QR en Excel?
En el video tutorial ejemplificamos como podemos generar un código QR mediante el uso de macros y funciones en Excel.
Basándonos en un listado de productos y sus precios en el rango A1:B4, utilizamos el rango C1:E4 para obtener un código QR en formato de imágen editable y movible.
La columna C contiene el texto informativo que contendrá el código, mientras que la columna D se utiliza para aplicar la función de la macro y la columna E se utiliza a modo estético para acomodar la imágen del código QR (ya que la macro posiciona de forma automática la imágen del código QR a la derecha de la celda que contiene la función).
La instrucción de la macro que genera el código QR es la siguiente:
Option Explicit Function URL_QRCode_SERIES( _ ByVal PictureName As String, _ ByVal QR_Value As String, _ Optional ByVal PictureSize As Long = 150, _ Optional ByVal DisplayText As String = "", _ Optional ByVal Updateable As Boolean = True) As Variant Dim oPic As Shape, oRng As Excel.Range Dim vLeft As Variant, vTop As Variant Dim sURL As String Const sRootURL As String = "https://chart.googleapis.com/chart?" Const sSizeParameter As String = "chs=" Const sTypeChart As String = "cht=qr" Const sDataParameter As String = "chl=" Const sJoinCHR As String = "&" If Updateable = False Then URL_QRCode_SERIES = "outdated" Exit Function End If Set oRng = Application.Caller.Offset(, 1) On Error Resume Next Set oPic = oRng.Parent.Shapes(PictureName) If Err Then Err.Clear vLeft = oRng.Left + 4 vTop = oRng.Top Else vLeft = oPic.Left vTop = oPic.Top PictureSize = Int(oPic.Width) oPic.Delete End If On Error GoTo 0 If Len(QR_Value) = 0 Then URL_QRCode_SERIES = CVErr(xlErrValue) Exit Function End If sURL = sRootURL & _ sSizeParameter & PictureSize & "x" & PictureSize & sJoinCHR & _ sTypeChart & sJoinCHR & _ sDataParameter & UTF8_URL_Encode(VBA.Replace(QR_Value, " ", "+")) Set oPic = oRng.Parent.Shapes.AddPicture(sURL, True, True, vLeft, vTop, PictureSize, PictureSize) oPic.Name = PictureName URL_QRCode_SERIES = DisplayText End Function Function UTF8_URL_Encode(ByVal sStr As String) Dim i As Long Dim a As Long Dim res As String Dim code As String res = "" For i = 1 To Len(sStr) a = AscW(Mid(sStr, i, 1)) If a < 128 Then code = Mid(sStr, i, 1) ElseIf ((a > 127) And (a < 2048)) Then code = URLEncodeByte(((a \ 64) Or 192)) code = code & URLEncodeByte(((a And 63) Or 128)) Else code = URLEncodeByte(((a \ 144) Or 234)) code = code & URLEncodeByte((((a \ 64) And 63) Or 128)) code = code & URLEncodeByte(((a And 63) Or 128)) End If res = res & code Next i UTF8_URL_Encode = res End Function Private Function URLEncodeByte(val As Integer) As String Dim res As String res = "%" & Right("0" & Hex(val), 2) URLEncodeByte = res End Function
|
La función que crea esta macro se denomina “URL_QRCode_SERIES” y dentro de la sintaxis de dicha función debemos utilizar sólo tres argumentos que deben apuntar siempre a la celda que contiene el texto informativo a incrustarse dentro del código. (en el video tutorial corresponde a la columna C).
Es importante mencionar que debemos estar conectados a internet para que la macro obtenga la información del código QR, y que al modificar alguno de los textos del listado original de datos la macro generará una nueva imágen de código QR “encima” de la anterior, con lo cual deberemos eliminar la imágen generada con anterioridad.
Te recomiendo ver el siguiente link con más videos de Tutoriales esenciales de Excel AQUÍ.
Salvo aclaración, todas las fórmulas y macros de este sitio están configuradas para aplicarse sobre la celda A1. Algunas fórmulas se encuentran encerradas entre llaves {} debido a que son fórmulas matriciales. Estas llaves no deben introducirse tecleándolas, sino que se generan automáticamente al aceptar la fórmula pulsando Control+Shift+Enter al mismo tiempo. Las fórmulas de este sitio son compatibles con versiones de Microsoft Excel® 2010 o superiores.