엑셀 2010에서 qr코드 생성 매크로 만드는 방법

2023. 2. 14. 16:53 / 서기랑

 최신 버전의 엑셀이라면 간단하게 qr코드를 만들 수 있다.

 하지만 구 버전의 엑셀이라면 기본적으로는 qr코드를 만들 수 있는 방법이 없으며 vba 매크로를 만든다고 해도 추가 라이브러리를 설치해야 하는 등의 작업이 필요한데 구글 차트를 이용하여 이미지를 삽입하는 방식으로 매크로를 만든다면 별다른 라이브러리나 엑셀의 버전에 상관없이 qr코드를 생성하는 매크로를 만드는 것이 가능하다.

     

    매크로 작동 방식.

     선택한 셀의 값으로 qr코드를 이미지를 생성하고 삽입하는 매크로.

     선택은 단일 셀을 선택을 해도 되고, 범위로 셀을 선택을 해도 된다.

     생성된 qr코드는 선택한 셀의 오른쪽에 생성된다.

     구글 차트를 이용하여 코드를 생성하는 방식이기 때문에 인터넷이 되지 않는 환경에서는 qr코드가 생성되지 않는다.

     

    엑셀 2010에서 qr코드 생성 매크로 만들기

    1. vba 실행.

     스타일을 삭제할 엑셀 파일에서 [Alt + F11] 키를 눌러 vba를 실행하자.

     

    2. 새 모듈 만들기.

     vba 창이 나타나면 상단의 [삽입 -> 모듈]을 클릭하여 새 모듈을 만들고 아래의 코드를 복사하여 붙여 넣자.

     (자주 사용한다면 버튼 형식으로 만드는 것이 더 편할 수 있다.)

    Sub QRCD()

    Dim imageURL As String
    Dim dRange As Range
    Dim cRange As Range

    Set cRange = Selection

    For Each i In cRange
    '조건문을 통해 값이 없는 셀은 무시
     If i.Value <> "" Then
    '값이 저장된 셀의 값을 imageURL 변수에 저장
      imageURL = "https://chart.googleapis.com/chart?chs=200x200&cht=qr&chl=" & i.Value

    '이미지를 불러올 셀의 범위 설정
      Set dRange = i.Offset(0, 1)

    'URL 이미지 불러오기
      With dRange.Parent.Pictures.Insert(imageURL)
       .Left = dRange.Left
       .Top = dRange.Top
       .Width = dRange.Width
       .Height = dRange.Height
      End With
     End If
    Next i

    End Sub

    vba에 매크로 입력

    3. 매크로 실행.

     엑셀에서 qr코드로 변환하고자 하는 값이 있는 셀을 선택한 뒤 vba 창에서 [F5] 혹은 [▶]을 눌러 매크로를 실행하자.

     잠시 기다리면 셀의 오른쪽에 qr코드 이미지가 생성된다.

    매크로 실행 화면

     

    코드의 간단한 설명

     코드에 주석이 달려있긴 하지만 조금더 설명이 필요하다면 아래를 참고하자.

     

    - Set selectRange = Selection

     : 선택한 셀의 값을 가져오는 부분.

    - For Each i In cRange

     : 선택한 셀 범위의 수만큼 반복 수행.

    - if i.Value <> "" Then

     : 조건문을 통해 값이 없는 셀이 범위에 있으면 넘어가도록 하였다.

    - imageURL

     : 이미지 주소를 넣는 부분으로 여기서는 구글 차트를 이용하여 qr코드를 생성하기 때문에 구글 차트의 주소와 선택한 셀의 값을 합친 값을 넣었다.

     구글 차트의 주소에는 생성되는 qr코드의 원본 이미지 크기가 지정되어 있는데 chs=200x200 부분을 수정하여 변경이 가능하다.

     (500x500 까지 가능)

     해당 부분을 수정하면 원하는 이미지를 불러오는 매크로를 만들 수 있다.

    - Set destinationRange = c.Offset(0, 1)

     : 이미지가 삽입되는 위치를 선택한 셀의 오른쪽 셀로 지정하였다.

     삽입되는 위치를 변경하고자 한다면 해당 부분을 변경하면 된다.

    - With dRange.Parent.Pictures.Insert(imageURL)

     : 이미지를 불러오는 부분으로 기본은 셀의 크기에 맞춰서 이미지를 불러오게 되어있다.

     이미지의 크기를 임의로 변경하고자 한다면 .Width와 .Height에 수치를 직접 입력하면 된다.

     

    그 외 내용

    - 다른 방법이 더 좋을 수 있다.

     구글 차트를 사용하여 qr코드를 생성하는 방법이다 보니 속도가 그리 빠른 편이 아니다.

     qr코드를 만들 수 있는 방법은 상당히 많기 때문에 구버전 엑셀에서 qr코드를 만들어야 하는 것이 아니라면 다른 방법을 사용하는 것이 더 좋을 것이다.

     

    - 구글 스프레드시트에서도 비슷한 방법의 사용이 가능하다.

     구글 스프레드시트는 아예 이미지를 불러오는 함수가 있어 매크로를 만들지 않아도 같은 방식으로 더 편하게 qr코드를 생성할 수 있다.

     다만 구글 스프레드시트는 qr코드가 셀에 포한되어 있는 방식이며 해당 매크로 방식은 이미지를 불러오는 방식이기 때문에 차이점은 있다.

     본인의 목적에 맞는 방법을 사용하면 좋지 않을까 한다.