'#엑셀qr코드 #엑셀자동화 #vba코딩 #qr코드삽입 #구글차트api #사무자동화 #엑셀매크로 #엑셀팁 #qrcode #excelproductivity'에 해당되는 글 1건

엑셀로 QR 코드 생성 방법

목차

1. 엑셀에서 QR 코드가 필요한 이유
2. 엑셀에서 QR 코드 생성 기본 설정
3. 셀 값 기반 QR 코드 생성 및 삽입 방법
4. Q&A
5. 관련 태그

엑셀에서 QR 코드가 필요한 이유

QR 코드는 다양한 정보를 손쉽게 전달할 수 있는 디지털 링크입니다. 최근에는 출입 명부, 상품 정보, 설문조사 링크, 교육 자료 등에서 자주 활용되고 있습니다. 특히 엑셀에서 특정 셀의 내용을 QR 코드로 변환하여 바로 옆 칸에 삽입하면 관리가 훨씬 효율적입니다.

예를 들어, A열에 직원 ID나 링크를 입력하고 B열에 해당 QR 코드를 자동 생성해 출력하거나 인쇄할 수 있어 실무에서 매우 유용합니다. 이 글에서는 엑셀에서 셀 데이터를 기반으로 QR 이미지를 바로 생성하는 방법을 아주 친절하게 안내드릴게요.

엑셀에서 QR 코드 생성 기본 설정

엑셀 자체는 기본적으로 QR 생성 기능을 지원하지 않기 때문에 외부 도구나 매크로(VBA)를 활용해야 합니다. 대표적인 방법은 다음과 같습니다:

  1. VBA 코드 활용 – 구글 차트 API를 통해 QR 코드 이미지 링크를 받아오는 방식
  2. QR 생성 사이트 API 활용 – 무료 이미지 API로 URL을 호출하여 이미지 삽입
  3. Add-in(추가 기능) – Microsoft 365에서 설치 가능한 QR 생성 Add-in 사용

이 글에서는 VBA를 통해 셀 데이터를 QR 코드로 변환하여 바로 옆 셀에 이미지 삽입하는 방법을 중심으로 설명드리겠습니다.

셀 값 기반 QR 코드 생성 및 삽입 방법

엑셀 VBA를 사용하면 아래와 같이 셀의 텍스트 값을 기반으로 자동으로 QR 코드를 생성하고, 옆 셀에 삽입할 수 있습니다.

1단계: VBA 편집기 열기

Alt + F11을 눌러 엑셀 VBA 편집기를 실행합니다.
왼쪽 탐색창에서 원하는 워크북을 우클릭 > 삽입 > 모듈을 클릭합니다.

2단계: 아래 코드를 복사하여 붙여넣기

#If VBA7 Then
    Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" ( _
        ByVal pCaller As LongPtr, _
        ByVal szURL As String, _
        ByVal szFileName As String, _
        ByVal dwReserved As LongPtr, _
        ByVal lpfnCB As LongPtr) As Long
#Else
    Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" ( _
        ByVal pCaller As Long, _
        ByVal szURL As String, _
        ByVal szFileName As String, _
        ByVal dwReserved As Long, _
        ByVal lpfnCB As Long) As Long
#End If

Sub GenerateQRCodeAutoFit()
    Dim rng As Range
    Dim cell As Range
    Dim url As String
    Dim tmpPath As String, tmpFile As String
    Dim ret As Long
    Dim img As Picture
    Dim targetCell As Range
    Dim imgWidth As Single, imgHeight As Single

    ' 작업 범위 (A2:A10) 설정
    Set rng = Range("A2:A10")
    tmpPath = Environ("TEMP") & "\"

    For Each cell In rng
        If cell.Value <> "" Then

            url = "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" & _
                  Application.WorksheetFunction.EncodeURL(cell.Value)
            tmpFile = tmpPath & "qr_" & cell.Row & ".png"

            ret = URLDownloadToFile(0, url, tmpFile, 0, 0)
            If ret = 0 Then
                Set targetCell = cell.Offset(0, 1)

                ' 기존 이미지 있으면 삭제
                Dim shp As Shape
                For Each shp In targetCell.Worksheet.Shapes
                    If Not Intersect(shp.TopLeftCell, targetCell) Is Nothing Then
                        shp.Delete
                    End If
                Next shp

                ' 이미지 삽입
                Set img = targetCell.Worksheet.Pictures.Insert(tmpFile)

                ' 이미지 크기 추출
                imgWidth = img.Width
                imgHeight = img.Height

                ' 셀 크기를 이미지에 정확히 맞추기
                With targetCell
                    .RowHeight = imgHeight
                    .ColumnWidth = imgWidth / 5.3 ' 엑셀의 열 너비는 픽셀이 아님
                End With

                ' 이미지 위치 맞춤
                With img
                    .Left = targetCell.Left
                    .Top = targetCell.Top
                    .Placement = xlMoveAndSize
                End With

            Else
                MsgBox "? 다운로드 실패: " & cell.Value
            End If
        End If
    Next cell

    MsgBox "? 모든 QR 코드가 셀 크기에 딱 맞게 삽입되었습니다!", vbInformation
End Sub 

위 코드는 A2~A10 범위에 있는 셀의 내용을 기반으로 B열에 QR 이미지를 자동 삽입합니다. 코드 실행은 VBA 창에서 F5 키를 눌러 수행하거나, 엑셀 리본 메뉴에 버튼을 연결할 수도 있습니다.

3단계: 실행 결과 확인

코드 실행 후 A열에 텍스트가 입력되어 있다면, 그 옆 셀(B열)에 해당 URL을 기반으로 한 QR 이미지가 삽입됩니다. 이 이미지는 일반 그림으로 취급되며, 드래그 이동 또는 크기 조정도 가능합니다.

Q&A

Q1: 생성된 QR 이미지는 고정되나요?

A1: 삽입된 이미지는 셀과 연결되지 않으며, 셀 위치 변경 시 직접 이동해줘야 합니다.

Q2: 모바일로 QR을 스캔하면 정상 작동하나요?

A2: 네, 구글 차트 API 기반이므로 어떤 QR 스캐너에서도 정상 인식됩니다.

Q3: API 없이도 가능한가요?

A3: 외부 Add-in(추가 기능)을 설치하거나 로컬 이미지 삽입 방식도 있으나 실시간 생성은 API가 유리합니다.

'유용한 팁' 카테고리의 다른 글

네이버 블로그 구글 검색  (0) 2025.04.15
프로토콜 A2A: 차세대 통신 혁신  (0) 2025.04.10
블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,