Проблемы с созданием Excel QR - & + - PullRequest
0 голосов
/ 23 февраля 2020

Итак, я использовал следующий код модуля VBA для генерации QR-кодов в нужной ячейке. Код работает, как и ожидалось, для всех желаемых значений ASCII, кроме '&' и '+'. Если какой-либо из этих символов является примером средней строки - Jack & Jill - будет отображаться только «Jack», ie после и включая «&» будет обрезано. Аналогичная история с «+».

Заранее спасибо

  Function Insert_QR(codetext As String)
    Dim URL As String, MyCell As Range​
​
    Set MyCell = Application.Caller​
    URL = "https://chart.googleapis.com/chart?chs=125x125&cht=qr&chl=" & codetext​
    On Error Resume Next​
      ActiveSheet.Pictures("My_QR_" & MyCell.Address(False, False)).Delete 'delete if there is prevoius one​
    On Error GoTo 0​
    ActiveSheet.Pictures.Insert(URL).Select​
    With Selection.ShapeRange(1)​
     .PictureFormat.CropLeft = 10​
     .PictureFormat.CropRight = 10​
     .PictureFormat.CropTop = 10​
     .PictureFormat.CropBottom = 10​
     .Name = "My_QR_" & MyCell.Address(False, False)​
     .Left = MyCell.Left + 25​
     .Top = MyCell.Top + 5​
    End With​
    Insert_QR = "" ' or some text to be displayed behind code​
End Function​

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Проблема заключалась в том, что QR-коды генерировались по URL. вышеприведенные символы - это так называемые символы с ограничением URL, поэтому их нельзя повторно воспроизвести в URL. поэтому для представления '&' в URL == '% 26'

0 голосов
/ 24 февраля 2020

Первым делом Google Image Charts устарел и может быть отключен в ближайшее время. Существуют альтернативы, такие как Диаграммы изображений .

Что касается вашей проблемы, codetext должен быть закодирован URLE. Если вы используете Excel 2013+, вы можете использовать

URL = "https://image-charts.com/chart?chs=125x125&cht=qr&chl=" & WorksheetFunction.EncodeUrl(codetext)

В противном случае вы можете следовать этому ответу , который предоставляет функцию URLEncode, которая также будет кодировать параметры запроса, чтобы генерировать данные c изображение QR-кода.

...