03. april 2007 - 21:09Der er
15 kommentarer og 1 løsning
Produktion af stregkoder i exel med makro ell. add-in
Jeg skal kunne fremstille prislister hvor ean-nummeret skal kunne scannes vh.a stregkode.
I dag kan vi med en makro, oprettet i et worddokument, omdanne ean nummeret til den kode fonten (UPCHeightARedA)kan læse F.eks. 8714075320636 bliver til koden }<(l%kr&=dcagdg<
Men det kræver en del copy and paste mellem de to programmer
Ønsket er, at samme makro kan lægges over i det exel ark, hvor vi producerer prislisterne. Det er ønsket, at markoen kan behandle kolonnen med ean-numrene automatisk og få koderne skrevet over i en nabokolonne.
Jeg er klar til at honorere en færdig løsning, hvis jeg ikke skal bruge tid og kræfter på selv at lave løsningen.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
linie = Mid(Taldata(EAN(1) + 1), 4, 1) + "<" For x = 1 To 12 linie = linie + Mid(Taldata(EAN(x + 1) + 1), land(EAN(1) + 1, x), 1) If x = 6 Then linie = linie + "=" End If Next x linie = linie + "<"
Rem Kolonne A talkode B konverteret EAN Rem =================================== Sub startBAR() Rem Gennemløb ark - for talkode til konvertering For ræk = 1 To 65000 Rem Er kolonne A udfyldt med talkode If ActiveSheet.Cells(ræk, 1) <> "" Then Rem Er talkode konverteret - hvis ikke så konverter If ActiveSheet.Cells(ræk, 2) = "" Then EAN Cells(ræk, 1), ræk End If Else MsgBox ("Konvertering afsluttet") Exit Sub End If Next ræk End Sub Private Sub EAN(talKode, ræk) Dim Taldata(10) As String Dim land(10, 12) As String Dim EAN(13) As Byte Dim linie As String ind_EAN = talKode
If Len(ind_EAN) > 0 Then Rem Konverter input til tal tal = Val(Mid(ind_EAN, 1, 12)) If tal > 0 Then Taldata(1) = "!kau" Taldata(2) = Chr(34) + "lbv" Taldata(3) = "#mcw" Taldata(4) = "$ndx" Taldata(5) = "%oey" Taldata(6) = "&pfz" Taldata(7) = "'qg{" Taldata(8) = "(rh|" Taldata(9) = ")si}" Taldata(10) = "*tj~"
linie = Mid(Taldata(EAN(1) + 1), 4, 1) + "<" For x = 1 To 12 linie = linie + Mid(Taldata(EAN(x + 1) + 1), land(EAN(1) + 1, x), 1) If x = 6 Then linie = linie + "=" End If Next x linie = linie + "<"
'EANfont - indsættes i kolonneB ActiveSheet.Cells(ræk, 2).Select Selection.Font.Name = "UPCHeightARedA" Selection.Font.Size = 48 Selection = linie End If End If
VBA = Visual Basic for Applications = programmeringssproget i Office-pakken. VBA aktiveres som i Word - med Alt+F11 : kopier koden herfra og aktiver Ark1 i VBA-vinduet - indsæt heri.
Indsæt et par Talkoder i kolonne og start koden fra:
Sub StartBar - med F5 - eller forbind denne Sub med en knap i selve Ark1.
Efter lidt prøvenfrem og tilbage lykkedes det at få din kode til at fungere i det ark, hvor det skal buges. Jeg er ny bruger af Supertekst. Jeg var ikke klar over, hvor let det er at finde folk som dig, der kan ting, som jeg hidtil har anset for uløselige.
Det er ikke sidste gang jeg bruger Eksperten. Mvh Roding
Du skal vende dig til at sende tilbagemeldinger som kommentar - når du har stillet spørgsmålet. Andre kan så sende kommentarer/svar. Når du får et svar, som du kan accepterer - så vælger du dette - og aktivere accepter svar.
Det var godt du fik til til at fungere, som ønsket - så vend blot tilbage en anden gang,
Hej supertekst Jeg har megen glæde af det programmel du lavede til mig. Nu er jeg bare kommet ud for at skulle producere stregkoder, hvor det første ciffer er et nul. Den kan kun oprettes i exel hvis cellen formatteres som text. Men det format eller nullet vil din kode ikke kendes ved. Hvis du kan løse det foreslår jeg at du indsætter rettelsen i en kopi af den kode jeg bruger nu, for ikke at skulle gentage tilrettelse af cellereferencer.
Jeg giver 50 point for løsningen. Skal jeg oprette et nyt spørgsmål? Mvh Rding
Det tog så lidt længere tid - men her er en ny version:
Rem VERSION af 19-06-2007
Dim nulFlag As Boolean Rem Kolonne A talkode B konverteret EAN Rem =================================== Sub startBAR()
Rem Gennemløb ark - for talkode til konvertering For ræk = 1 To 65000 Rem Er kolonne A udfyldt med talkode If ActiveSheet.Cells(ræk, 1) <> "" Then Rem Er talkode konverteret - hvis ikke så konverter If ActiveSheet.Cells(ræk, 2) = "" Then
Rem Tester for længde på evt. kun 12 ciffre c = Cells(ræk, 1).Value cl = Len(c) If cl = 12 Then nulFlag = True Else nulFlag = False End If
EAN Cells(ræk, 1), ræk End If Else MsgBox ("Konvertering afsluttet") Exit Sub End If Next ræk End Sub Private Sub EAN(talKode, ræk) Dim Taldata(10) As String Dim land(10, 12) As String Dim EAN(13) As Byte Dim linie As String, ind_EAN As String ind_EAN = talKode
Rem Test længdeflag - hvis 12 indsæt foranstillet 0 If nulFlag = True Then ind_EAN = "0" + ind_EAN End If
If Len(ind_EAN) > 0 Then Rem Konverter input til tal tal = Val(Mid(ind_EAN, 1, 12)) If tal > 0 Then Taldata(1) = "!kau" Taldata(2) = Chr(34) + "lbv" Taldata(3) = "#mcw" Taldata(4) = "$ndx" Taldata(5) = "%oey" Taldata(6) = "&pfz" Taldata(7) = "'qg{" Taldata(8) = "(rh|" Taldata(9) = ")si}" Taldata(10) = "*tj~"
linie = Mid(Taldata(EAN(1) + 1), 4, 1) + "<" For x = 1 To 12 linie = linie + Mid(Taldata(EAN(x + 1) + 1), land(EAN(1) + 1, x), 1) If x = 6 Then linie = linie + "=" End If Next x linie = linie + "<"
'EANfont - indsættes i kolonneB ActiveSheet.Cells(ræk, 2).Select Selection.Font.Name = "UPCHeightARedA" Selection.Font.Size = 48 Selection = linie End If End If
Du kan evt. oprette et nyt spørgsmål "Points til Supertekst" i samme kategori.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.