TUTORIALES DE EXCEL

Cómo crear un código QR en Excel

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.