EXCEL VBA에서만 QR 코드. 일부 수정하여 일본어(전각)에서도 작성 가능하게. 견본 엑셀 파일 있다.

참고(다른 투고)



1 파일의 HTML(+JavaScript)로, QRcode를 생성한다
htps : // 코 m / 산 타로 6 / ms / db17788158d 38f3 a 5c

다른 라이브러리



2020.10.29 추기(이하, 가르쳐 주셨습니다)

QRCodeLibVBA

QRCodeLibVBA는 Excel VBA로 작성된 QR 코드 생성 라이브러리입니다.
JIS X 0510을 기반으로 모델 2 코드 심볼을 생성합니다.

yas78/QRCodeLibVBA
htps : // 기주 b. 코 m / 또는 s78 / QR 코데 ぃ bV
htps : // 기주 b. 이 m/나 s78/QR 여기에서 bV등. 기 t


<본편>EXCEL의 VBA만으로 QR코드.



샘플 파일 다운로드



샘플 파일 다운로드

https://github.com/santarou6/QR_EXCEL/raw/master/QR 코드 작성 엑셀.xlsb
https://github.com/santarou6/QR_EXCEL/blob/master/QR 코드 작성 엑셀.xlsb

코드 게시



EXCEL의 VBA에서만 QR 코드를 만드는 코드는 MIT 라이센스로 게시되었습니다.

htps : // 여기. 오, ぇ. 코 m / 아 r ゔ ぇ / p / 바 r 코데 - v 바 마 c 로 온 ly / 드 w ぉ 아 ds
링크



용도(예)



엑셀을 이용한 QR 코드 작성은
・넷 접속/Google Chart API
・QR코드 작성하는 DLL
・Excel2016의 「Microsoft Barcode Control」
의 이용을 생각할 수 있지만, 환경 구축에 일정한 수고.

원소의 엑셀로 QR코드를 만들 수 있으면, 그 엑셀 파일만을 배포해, 데이터 입력해 생긴 것을 지면에서 우송해 줘/FAX 해 주는, 「로테크」인 경로를 개입시켜도, "데이터 트래피킹"이 가능합니다.

일본어(전각)용으로 일부 수정



이 "barcody.xls"가 일본어 (전각)에서 잘 작동하지 않는 것 같았기 때문에,
일부 소스를 바꾸면 잘 되었으므로 메모입니다.

(※해외 쪽의 소스이므로, 전각 문자의, 「AscW」로 마이너스치가 돌아오는 곳이, 상정되지 않았다고 추량)

sample.xls
     k = AscL(Mid(ptext, i, 1))

2 개소가 있기 때문에,

sample.xls
     k = AscL(Mid(ptext, i, 1))
     If k < 0 Then k = k + 65536

라고 바꾸면 OK.

추가: 모양이 아닌 셀의 색칠 방법으로 변경



2019.3.24 추가

원전의 barcody.xls판에서는, QR코드를 「Shape 오브젝트」를 사용해 작성하고 있기 때문에, (약간) 느린.

다른 시트에 눈의 방안지(종횡 정사각형의, 세세한 셀의 것) 준비해,
매스 눈을 채우게 하면 빨리 만들 수 있다.
(조건부 서식으로 「1」을 검정으로 셀을 채우는 형태로 한다.)

(일반 "xShape As Shape"를 삭제하는 것이 정중하지만,
서브 루틴 「Sub bc_2Dms」안에서만, 이하의 Case문의 수정하면 기본 OK라고 생각합니다. )

sample.xls
Select Case w
Case 1:     Call drw(x, y, m, m)
Case 2:     Call drw(x + m, y, m, m)
Case 3:     Call drw(x, y, dm, m)
Case 4:     Call drw(x, y + m, m, m)
Case 5:     Call drw(x, y, m, dm)
Case 6:     Call drw(x + m, y, m, m)
            Call drw(x, y + m, m, m)
Case 7:     Call drw(x, y, dm, m)
            Call drw(x, y + m, m, m)
Case 8:     Call drw(x + m, y + m, m, m)
Case 9:     Call drw(x, y, m, m)
            Call drw(x + m, y + m, m, m)
Case 10:    Call drw(x + m, y, m, dm)
Case 11:    Call drw(x, y, dm, m)
            Call drw(x + m, y + m, m, m)
Case 12:    Call drw(x, y + m, dm, m)
Case 13:    Call drw(x, y, m, m)
            Call drw(x, y + m, dm, m)
Case 14:    Call drw(x + m, y, m, m)
            Call drw(x, y + m, dm, m)
Case 15:    Call drw(x, y, dm, dm)
End Select

sample.xls

Sub drw(a, b, c, d)
    Dim xc As Integer
    Dim yr As Integer
    Dim w As Integer
    Dim h As Integer
    xc = CInt((a / 2.5) + 1)
    yr = CInt((b / 2.5) + 1)
    w = CInt((c / 2.5) + 0)
    h = CInt((d / 2.5) + 0)
    Sheets("QR").Cells(yr, xc).Value = 1
    'w
    If w > 1 Then
        Sheets("QR").Cells(yr, xc + 1).Value = 1
    End If
    'h
    If h > 1 Then
        Sheets("QR").Cells(yr + 1, xc).Value = 1
    End If

    If w > 1 And h > 1 Then
        Sheets("QR").Cells(yr + 1, xc + 1).Value = 1
    End If
End Sub

덧붙여 : 반각 숫자만의 문자열의 인코딩은 할 수 없는 모양



2020.2.15 추가
자세한 내용은 코멘트 참조

(참고 : 별도 게시) 엑셀의 워크시트 함수만으로 QR코드 작성

좋은 웹페이지 즐겨찾기