Vinnaren i pepparkakshustävlingen!
2023-03-28, 11:26
  #1
Medlem
Hej,

Jag har för tillfället denna koden i arbetet för att skriva ut en pallflagga:

Kod:
filepath = "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data..." & Cells(3, 18).Value
    
    With ActiveSheet.Pictures.Insert(filepath)
        .ShapeRange.ScaleWidth 0.8, msoFalse, msoScaleFromTopLeft
        .ShapeRange.ScaleHeight 0.8, msoFalse, msoScaleFromTopLeft
        .Left = ActiveSheet.Range("I1").Left
        .Top = ActiveSheet.Range("C4").Top
        .Width = ActiveSheet.Range("A1:B1").Width
        .Height = ActiveSheet.Range("A1:A5").Height
        .Placement = 1
    End With

Men det verkar vara något strul med api.qrserver.com och nu uppdateras inte dom 4 QR-koderna när jag kör anropet.

Någon som kan hjälpa mig att anpassa koden med en lokal lösning/excel add-in som inte är avhängd av ett anrop mot en extern QR-konverter?

Tack!
Citera
2023-03-28, 19:13
  #2
Medlem
JohannesSnajdares avatar
Det fanns förr någon ActiveX-komponent man kunde skapa QR-koder i Excel med men ingen aning om det fortfarande existerar något sånt...

Verkar som qrserver endast svarar med bilden _första_ gången för varje unik 'data'.
Försöker man ladda om så blir det blankt.

Jag hade kört med Google Chart istället, den är lika enkel att använda och funkar varje gång:

Exempel:

Kod:
cht = qr
chs = width x height
chl = data

https://chart.googleapis.com/chart?cht=qr&chs=150x150&chl=kalle_kula

https://chart.googleapis.com/chart?c...chl=kalle_kula
Citera
2023-03-29, 15:08
  #3
Medlem
Tack för svaret. Hittade dock en lokal lösning innan jag såg detta.

https://www.extendoffice.com/documen...e-qr-code.html

Kan inte VBA så bra dock, så jag är osäker på om jag lyckas lyfta in detta i min lösning.

Min nuvarande kod:
Kod:
Sub addQR()

    For Each pic In ActiveSheet.Pictures
        pic.Delete
    Next pic

    filepath = "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data..." & Cells(3, 18).Value
    
    With ActiveSheet.Pictures.Insert(filepath)
        .ShapeRange.ScaleWidth 0.8, msoFalse, msoScaleFromTopLeft
        .ShapeRange.ScaleHeight 0.8, msoFalse, msoScaleFromTopLeft
        .Left = ActiveSheet.Range("I1").Left
        .Top = ActiveSheet.Range("C4").Top
        .Width = ActiveSheet.Range("A1:B1").Width
        .Height = ActiveSheet.Range("A1:A5").Height
        .Placement = 1
    End With
    
    filepath2 = "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data..." & Cells(5, 18).Value
    
    With ActiveSheet.Pictures.Insert(filepath2)
    .ShapeRange.ScaleWidth 0.8, msoFalse, msoScaleFromTopLeft
    .ShapeRange.ScaleHeight 0.8, msoFalse, msoScaleFromTopLeft
    .Left = ActiveSheet.Range("G11").Left
    .Top = ActiveSheet.Range("G11").Top
    .Width = ActiveSheet.Range("A1:B1").Width
    .Height = ActiveSheet.Range("A1:A5").Height
    .Placement = 1
    End With
    
        filepath3 = "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data..." & Cells(7, 18).Value
    
    With ActiveSheet.Pictures.Insert(filepath3)
    .ShapeRange.ScaleWidth 0.8, msoFalse, msoScaleFromTopLeft
    .ShapeRange.ScaleHeight 0.8, msoFalse, msoScaleFromTopLeft
    .Left = ActiveSheet.Range("E21").Left
    .Top = ActiveSheet.Range("E21").Top
    .Width = ActiveSheet.Range("A1:B1").Width
    .Height = ActiveSheet.Range("A1:A5").Height
    .Placement = 1
    End With
    
        filepath4 = "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data..." & Cells(9, 18).Value
    
    With ActiveSheet.Pictures.Insert(filepath4)
    .ShapeRange.ScaleWidth 0.8, msoFalse, msoScaleFromTopLeft
    .ShapeRange.ScaleHeight 0.8, msoFalse, msoScaleFromTopLeft
    .Left = ActiveSheet.Range("L21").Left
    .Top = ActiveSheet.Range("L21").Top
    .Width = ActiveSheet.Range("A1:B1").Width
    .Height = ActiveSheet.Range("A1:A5").Height
    .Placement = 1
    End With
    
    picPath = "O:\Robin\Dokument\logga.jpg"
    
With ActiveSheet.Pictures.Insert(picPath)
    .ShapeRange.LockAspectRatio = msoFalse
    .ShapeRange.ScaleWidth 1.78, msoFalse, msoScaleFromTopLeft
    .ShapeRange.ScaleHeight 1.24, msoFalse, msoScaleFromTopLeft
    .Left = ActiveSheet.Range("B3").Left
    .Top = ActiveSheet.Range("B3").Top
    .Placement = 1
  End With
    
End Sub

Koden med ActiveX-kontroller:

Kod:
Sub setQR()
'Updated by Extendoffice 2018/8/22
    Dim xSRg As Range
    Dim xRRg As Range
    Dim xObjOLE As OLEObject
    On Error Resume Next
    Set xSRg = Application.InputBox("Please select the cell you will create QR code based on", "Kutools for Excel", , , , , , 8)
    If xSRg Is Nothing Then Exit Sub
    Set xRRg = Application.InputBox("Select a cell to place the QR code", "Kutools for Excel", , , , , , 8)
    If xRRg Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xObjOLE = ActiveSheet.OLEObjects.Add("BARCODE.BarCodeCtrl.1")
    xObjOLE.Object.Style = 11
    xObjOLE.Object.Value = xSRg.Text
    ActiveSheet.Shapes.Item(xObjOLE.Name).Copy
    ActiveSheet.Paste xRRg
    xObjOLE.Delete
    Application.ScreenUpdating = True
End Sub
Citera
2023-03-30, 15:07
  #4
Medlem
Jag har fått det att fungera så långt att jag kan importera QR-koden.

Däremot skapas det en förhållandevis stor border/vit kant runt streckkoden som jag inte lyckas få bort. Vet egentligen inte vad jag sysslar med, men bifogar koden jag googlat mig fram.
Kod:
    For Each pic In ActiveSheet.Pictures
        pic.Delete
    Next pic

    Dim xObjOLE As OLEObject
    On Error Resume Next

    Application.ScreenUpdating = False
    Set xObjOLE = ActiveSheet.OLEObjects.Add("BARCODE.BarCodeCtrl.1")
    xObjOLE.Object.Style = 11
    xObjOLE.Object.Value = [R3].Text
    xObjOLE.Width = 100
    'xObjOLE.ShapeRange.Fill.Transparency = 1
    'xObjOLE.Border.Weight = 0
    
    ActiveSheet.Shapes.Item(xObjOLE.Name).Copy
    ActiveSheet.Paste Destination:=Worksheets("Blad1").Range("I4")
    xObjOLE.Delete
    Application.ScreenUpdating = True
Ingen av dom som jag satt som kommentar fungerar. Det är ungefär vad jag hittat och testat, med lite modifikationer.
Citera
2023-03-30, 17:35
  #5
Moderator
Rassas avatar
Programvara: Windows —> Systemutveckling /Moderator
Citera
2023-03-31, 05:27
  #6
Medlem
Ursäkta felplaceringen. Vore tacksam om någon vet vilken rad som saknas och kan hjälpa mig!
Citera
2023-04-05, 10:33
  #7
Medlem
JohannesSnajdares avatar
Kanske?

Kod:
xObjOLE.Object.Borderwidth = 0
xObjOLE.Object.Borderheight = 0
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback