Planillas Excel de Ingeniería Civil, Plantillas, hojas de cálculo, Macros…Gratis para Ingenieros Civiles y estudiantes de Ingeniería Civil.

Genera códigos QR en Excel con una sola fórmula (VBA)

¿Necesitas generar códigos QR directamente en Excel, sin complementos, sin costos y con una sola fórmula? En este artículo te compartimos una macro VBA personalizada que convierte el contenido de cualquier celda en un código QR visual, ajustándose automáticamente al tamaño de la celda.

Esta herramienta es ideal para ingenieros, administradores y cualquier profesional que trabaje con Excel y necesite generar QRs dinámicos de URLs, códigos, textos o datos de identificación.

Formula Generar código QR en Excel

¿Qué hace esta función QR en Excel?

La función =QR(celda) realiza automáticamente lo siguiente:

  • Descarga el código QR desde la API gratuita de qrserver.com
  • Inserta la imagen QR directamente sobre la celda donde se invoca
  • Ajusta el QR al tamaño exacto de la celda (con un margen interno del 5%)
  • Si el contenido de la celda cambia, el QR se regenera automáticamente
  • Cada celda tiene su propio QR con nombre único — no se arrastra ni duplica al copiar la fórmula
  • Usa corrección de errores nivel H: el QR sigue legible aunque esté parcialmente dañado o impreso con baja calidad
  • A continuación un video que muestra el funcionamiento de la Formula QR para generar los respectivos códigos en imagen:

Requisitos

  • Excel 2010 o superior en Windows
  • Conexión a Internet activa al momento de generar el QR
  • Macros habilitadas en Excel
  • Guardar el archivo en formato .xlsm (libro habilitado para macros)

Instalación de la función Excel paso a paso

  1. Abre tu archivo Excel y presiona Alt + F11 para abrir el Editor de Visual Basic.
  2. En el panel izquierdo, haz clic derecho sobre tu libro → Insertar → Módulo.
  3. Copia y pega el código completo que aparece más abajo en el módulo vacío.
  4. Cierra el editor y vuelve a Excel.
  5. Guarda el archivo como .xlsm (libro habilitado para macros).

Código VBA — Función =QR()

Copia el siguiente código completo y pégalo en el módulo VBA:

'===============================================================================
' FUNCIÓN: QR
'===============================================================================
' SINTAXIS : =QR(celda, [tamaño])
' ARGUMENTOS: celda  → contenido a codificar (texto, URL, número)
'             tamaño → píxeles del QR (opcional, defecto 0 = ajusta a la celda)
' EJEMPLOS  : =QR(A1)        QR ajustado al tamaño actual de la celda
'             =QR(A1, 250)   QR de 250×250 forzado en la celda
' NOTAS     : · Requiere Internet (api.qrserver.com)
'             · El QR se ajusta al tamaño de la celda automáticamente
'             · Para controlar el tamaño, ajusta alto/ancho de la celda primero
'             · No usar en rangos múltiples; invocar celda por celda
'===============================================================================
Function QR(rng As Range, Optional tamano As Integer = 0) As String
    Dim sData As String: sData = Trim(CStr(rng.Value))
    If Len(sData) = 0 Then Exit Function

    Dim oCell As Range: Set oCell = Application.Caller

    Dim px As Integer
    If tamano <= 0 Then
        px = Int(Application.Min(oCell.Width, oCell.Height))
    Else
        px = tamano
    End If
    If px < 10   Then px = 10
    If px > 1000 Then px = 1000

    ' ── Saneado de nombre de hoja con caracteres especiales ──────────────────
    Dim sHoja As String
    sHoja = oCell.Worksheet.Name
    sHoja = Replace(Replace(Replace(Replace(Replace(sHoja, "/", ""), "\", ""), ":", ""), "?", ""), "*", "")

    Dim sTmp    As String: sTmp    = Environ("TEMP") & "\qr_" & sHoja & "_" & oCell.Address(False, False) & ".png"
    Dim sNombre As String: sNombre = "QR_" & sHoja & "_" & oCell.Address(False, False)

    Dim oHTTP As Object: Set oHTTP = CreateObject("MSXML2.XMLHTTP")
    oHTTP.Open "GET", "https://api.qrserver.com/v1/create-qr-code/?size=" & px & "x" & px & _
               "&ecc=H" & _
               "&qzone=1" & _
               "&data=" & WorksheetFunction.EncodeURL(sData), False
    oHTTP.setRequestHeader "Connection", "close"
    oHTTP.Send
    If oHTTP.Status <> 200 Then Exit Function

    Dim oStream As Object: Set oStream = CreateObject("ADODB.Stream")
    oStream.Type = 1: oStream.Open
    oStream.Write oHTTP.ResponseBody
    oStream.SaveToFile sTmp, 2: oStream.Close
    Set oStream = Nothing: Set oHTTP = Nothing

    Dim oPic As Picture
    On Error Resume Next
    For Each oPic In oCell.Worksheet.Pictures
        If oPic.Name = sNombre Then oPic.Delete: Exit For
    Next oPic

    ' ── Margen interno del 5% por lado para que se noten los bordes ──────────
    Dim dMargen As Double: dMargen = 0.05
    Dim dAncho  As Double: dAncho  = oCell.Width  * (1 - dMargen * 2)
    Dim dAlto   As Double: dAlto   = oCell.Height * (1 - dMargen * 2)

    With oCell.Worksheet.Pictures.Insert(sTmp)
        .Name      = sNombre
        .Top       = oCell.Top  + oCell.Height * dMargen
        .Left      = oCell.Left + oCell.Width  * dMargen
        .Width     = dAncho
        .Height    = dAlto
        .Placement = xlFreeFloating
    End With
    On Error GoTo 0

    QR = ""
End Function

Una vez instalado el código, el uso es muy simple:

  • Ajusta el alto de fila y ancho de columna de la celda destino al tamaño que deseas para el QR
  • Escribe =QR(A1) en esa celda, donde A1 contiene el texto o URL a codificar
  • El QR se genera e inserta automáticamente

También puedes forzar un tamaño específico con el segundo argumento:

  • =QR(A1) → QR ajustado al tamaño de la celda
  • =QR(A1, 200) → QR de 200×200 píxeles
  • =QR(A1, 300) → QR de 300×300 píxeles

Compatibilidad

La función es compatible con las siguientes versiones de Excel en Windows:

  • ✅ Excel 2010, 2013, 2016, 2019, 2021
  • ✅ Microsoft 365 (Windows)
  • ⚠️ Excel 2007 — compatibilidad parcial (EncodeURL no disponible)
  • ❌ Excel para Mac — MSXML2 es exclusivo de Windows
  • ❌ Excel Online — sin soporte para VBA

Notas importantes de la Formula para Generar QR

  • Requiere Internet — la función llama a una API externa cada vez que se recalcula. Sin conexión, la celda quedará vacía.
  • Una celda a la vez — no se puede arrastrar la fórmula como una función normal. Cada QR se invoca individualmente en su celda destino.
  • Guardar como .xlsm — el archivo debe guardarse en formato habilitado para macros, no como .xlsx.
  • Macros habilitadas — ve a Archivo → Opciones → Centro de confianza → Configuración de macros y habilita las macros.

Esperamos que esta formula para generar códigos QR en Excel les sea de utilidad. Es una herramienta práctica, gratuita y sin dependencias externas, ideal para ingenieros, administradores y cualquier profesional que trabaje con Excel. Saludos a toda la comunidad de Civil Excel.

Related : Genera códigos QR en Excel con una sola fórmula (VBA)

0 Post a Comment:

Publicar un comentario