Kezdőlap › Fórumok › Excel programozás › [Resolved] Excel VBA QR kód ékezetes betűk?
- This topic has 6 hozzászólás, 2 résztvevő, and was last updated 3 years, 5 months telt el by Andras555.
-
SzerzőBejegyzés
-
2021-07-05-10:14 #8667
Sziasztok!
Szeretnék egy oszlopban lévő szövegekre egyszerre gyártani külön-külön egy egy QR-kódokat.
Erre találtam is egy vba kódot működik is de sajnos az ékezetes betűvel nem tud mit kezdeni.
Megcsinálja a QR kódokat de nem tudom beolvasni, ha ékezetes betűvel írok szöveget.
Ékezetes betűk nélkül tökéletes.Tudnátok benne segíteni, hogy az ékezetes betűkkel is jól működjön?
Köszönöm!Sub InsertQR()
Dim xHttp: Set xHttp = CreateObject(„Microsoft.XMLHTTP”)
Dim bStrm: Set bStrm = CreateObject(„Adodb.Stream”)
Dim Size: Size = 250 ‘dalam Pixels
Dim QR, Name, val
Dim Invalid: Invalid = „\/:*?” & „””” & „<>|”
For Each val In Selection
Name = val.Value
For intChar = 1 To Len(Name)
If InStr(Invalid, LCase(Mid(Name, intChar, 1))) > 0 Then
MsgBox „The file: ” & vbCrLf & „””” & Name & „””” & vbCrLf & vbCrLf & ” is invalid!”
Exit Sub
End If
Next
QR = „http://chart.googleapis.com/chart?chs=” & Size & „x” & Size & „&cht=qr&chl=” & Name
xHttp.Open „GET”, QR, False
xHttp.Send
With bStrm
.Type = 1 ‘//binary
.Open
.write xHttp.responseBody
.savetofile ThisWorkbook.Path & Application.PathSeparator & Name & „.png”, 2 ‘//overwrite
.Close
End With
Next
End Sub2021-07-05-10:59 #8668Szia!
A QR kódot nem a VBA program gyártja le, hanem egy Google webszolgáltatást hív meg, annak átadja az URL-ben a paramétereket, majd visszaolvassa az eredményt.
Tehát nincs ráhatás a QR kód generáló működésére, de lehet, hogy további paraméterekkel lehet rá hatni.
Egy másik megoldás lehet, hogy a cellában lévő szövegeket URL enkódolni kell, mielőtt kiküldöd az API-nak.
Erre Office 365-ben és lehet, hogy 2019-ben is van egy ENCODEURL függvény. A magyar neve most nincs meg, de valószínűleg valami hasonló…VBA-ban úgyis csak az angol játszik.
ha van O365-öd, akkor próbáld meg ezt:Name = val.Value helyett
Name = Application.WorkSheetFunction.EndodeURL(val.Value)Nézd meg mi lesz
Imre
2021-07-05-11:07 #8669Kedves Imre!
Köszönöm a választ, haza érek megnézem.
Igen külső url-csinálja a qr kódokat elvileg alapból utf-8 ba csinálja, próbáltam pár dolgot már de sajnos nem ment.
Itt találtam róla pár dologot:
https://developers.google.com/chart/infographics/docs/qr_codesRánéznél?
Köszönöm.2021-07-05-11:12 #8670Ha nincs O365, akkor saját URL enkódoló függvény kell.
Erre itt találsz példát:https://stackoverflow.com/questions/218181/how-can-i-url-encode-a-string-in-excel-vba
Imre
2021-07-05-19:20 #8671Köszönöm most az a jó megoldás, hogy a =URL.KÓDOL függvényt használva átkódolja majd ebből csinál qr kódot de sajna a qr kód névnek amit lement a gépre annak ezt adja meg pl.: Ez%20egy%20kombin%C3%A1lt%20szekr%C3%A9ny%2012345678
De mind1 így is jó. 🙂2021-07-05-23:06 #8672Ha jól gondolom, akkor a függvénnyel egy új oszlopba megcsinálod az átkódolt változatot, és azt kijelölve futtatod a makrót.
Ahogy megy a ciklus, a name változóba teszi az éppen soron következő cellát a kijelölésben.Ha a lementett PNG-nek az eredeti nevet szeretnéd adni, ami ugye egy oszloppal balra, a kijelölés mellett van, akkor próbáld ezt:
.savetofile ThisWorkbook.Path & Application.PathSeparator & val.offset(0,-1).Value & ".png", 2
Ha meg úgy is jó, akkor hagyd úgy..
Imre
2021-07-06-16:52 #8674Nagyon szépen köszönöm!
Hálás vagyok neked! -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.