online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon BenjaminM vom 09.12.2021, 15:19 Options

Lösung

VBA für Barcode

Hallo @all,

Kann mir jemand helfen?

Ich habe eine alte Barcodedatei ausgegraben, und wollte diese anpassen, doch es gelingt mir nicht so!

Hat einer Ahnung davon?
Die Änderungen die ich am Code vorgenommen habe, habe ich markiert.
Im Tab.Blatt "Bsp" ist die Einteilung, wie es später aussehen soll.
Mit den richtigen Zellgrößen
-Zellen müssen
-A1-D1 19,67 & 50,25 (B&H)
-A2-D2 19,67 & 22,50 (B&H)

Seitenränder
links, rechts 0,7
oben 2,2
unten 2
siehe Bsp
(die Maße müssen so sein damit sie auf ein Zweckform Etikettenbogen gedruckt werden können, gesammt 40 Etiketten pro Bogen.)

Momentan generiert mir der Code aber die folge Barcodes nur in Spalte A ich brauche das aber durchnummeriert A-D und dann nach unten.

Finde aber die Einstellungen nicht in der VBA.
Bitte kann da mal jemand nach schauen?

Gruß Benjae

Datei


Antwort schreiben

Antwort 1 von fedjo vom 09.12.2021, 17:07 Options

Hallo Benjae,
hast du es schon mal mit Word versucht?
In Word sind schon Etiketten von Zweckform hinterlegt.

Gruß
fedjo

Antwort 2 von BenjaminM vom 10.12.2021, 08:24 Options

Hallo,

nein habe ich nicht, da ich keine Vorlagen habe, ich vergaß zu sagen das ich leider noch mit Office97 arbeite.
Gibt es dennoch ein Lösung in Excel?

Gruß Benjae

Antwort 3 von fedjo vom 10.12.2021, 17:17 Options

Hallo Benjae,
auch in Word 97 kann man schon Etiketten erstellen:

Extras -> Umschläge und Etiketten -> Etiketten (-> deine Etikettgröße etc. definieren) -> Neues Dokument

Schon hast du eine DinA4-Seite die genauso aufgeteilt sein sollte wie dein Etikettenpapier, auf der du jedes Feld einzeln beschriften kannst.

Ansonsten gibt es noch von Avery Zweckform den Etikettenassistent.

Gruß
fedjo

Antwort 4 von BenjaminM vom 10.12.2021, 18:36 Options

Okay, danke.

Aber trotzdem hilft mir das jetzt nicht weiter diese Barcodes zu erstellen.
Und deshalb habe ich mich ja hier im Forum gemeldet!

Ich wollte ja gerne wissen ob mir da jemand mit dem VBA Code weiterhelfen kann der schon in der Datei ist.

Gruß Benjae

Antwort 5 von Charlotte_S vom 11.12.2021, 12:39 Options

Hallo Benjae,

siehe http://www.file-upload.net/download-2071385/SN2288959_CID_Barcode_b...

Angepasst:

Public Sub setupBarcodePages(pages As Integer, startBarcodeValue As Double, count As Integer)

Application.ScreenUpdating = False

fillPageWithBarcodes pages, startBarcodeValue + count - 1, count
setBarcodeCells pages, getBarcodeHeightFirst, getBarcodeHeightSecond, getClearTextHeightFirst, getClearTextHeightSecond

setWorksheet

Application.ScreenUpdating = True

End Sub


Sub fillPageWithBarcodes(page As Integer, startBarcodeValue As Double, count As Integer)
Dim col As Integer, row As Integer

If Not (count = 0) Then
fillPageWithBarcodes page - 1, startBarcodeValue - 1, count - 1
row = (((count - 1) \ 4) + 1) * 4
col = ((count - 1) Mod 4) + 1

Worksheets("Barcodes").Cells(row - 3, col).Value = Format_Code128(getContainerCode(Trim(Str(startBarcodeValue))))
' Worksheets("Barcodes").Cells(row, col).Value = "SID: " + getContainerCode(Trim(Str(startBarcodeValue)))
' Worksheets("Barcodes").Cells(row - 1, col).Value = Format_Code128(getContainerCode(Trim(Str(startBarcodeValue))))
Worksheets("Barcodes").Cells(row - 2, col).Value = "SID: " + getContainerCode(Trim(Str(startBarcodeValue)))
End If

End Sub


Sub setBarcodeCells(pages As Integer, heightFirst As Integer, heightSecond As Integer, clearTextHeightFirst As Integer, clearTextHeightSecond As Integer)
Dim row As Integer

If Not pages = 0 Then
setBarcodeCells pages - 1, heightFirst, heightSecond, clearTextHeightFirst, clearTextHeightSecond
If (pages Mod 4) = 1 Then
row = (pages \ 4 + 1) * 4 ' oder wie oben (ist egal) row = (((pages - 1) \ 4) + 1) * 4


Worksheets("Barcodes").Rows(row - 3).Font.Name = "Code-128-DH"
Worksheets("Barcodes").Rows(row - 3).VerticalAlignment = xlVAlignTop
Worksheets("Barcodes").Rows(row - 3).RowHeight = heightFirst
Worksheets("Barcodes").Rows(row - 3).Font.Size = 22

Worksheets("Barcodes").Rows(row - 2).Font.Name = "Arial"
Worksheets("Barcodes").Rows(row - 2).VerticalAlignment = xlVAlignTop
Worksheets("Barcodes").Rows(row - 2).RowHeight = clearTextHeightFirst
Worksheets("Barcodes").Rows(row - 2).Font.Size = 12

' Worksheets("Barcodes").Rows(row - 1).Font.Name = "Code-128-DH"
' Worksheets("Barcodes").Rows(row - 1).VerticalAlignment = xlVAlignTop
' Worksheets("Barcodes").Rows(row - 1).RowHeight = heightSecond
' Worksheets("Barcodes").Rows(row - 1).Font.Size = 22

' Worksheets("Barcodes").Rows(row).Font.Name = "Arial"
' Worksheets("Barcodes").Rows(row).VerticalAlignment = xlVAlignTop
' Worksheets("Barcodes").Rows(row).RowHeight = clearTextHeightSecond
' Worksheets("Barcodes").Rows(row).Font.Size = 12
End If
End If
End Sub


Public Sub setWorksheet()

Worksheets("Barcodes").PageSetup.Orientation = xlPortrait
Worksheets("Barcodes").PageSetup.LeftMargin = Application.InchesToPoints(0.3)
Worksheets("Barcodes").PageSetup.RightMargin = Application.InchesToPoints(0.3)
Worksheets("Barcodes").PageSetup.TopMargin = Application.InchesToPoints(0.5)
Worksheets("Barcodes").PageSetup.BottomMargin = Application.InchesToPoints(0)
'Wiederholungen dieser 5 Zeilen gelöscht

Worksheets("Barcodes").Columns("A").ColumnWidth = getBarcodeWidthFirst
Worksheets("Barcodes").Columns("B").ColumnWidth = getBarcodeWidthFirst
Worksheets("Barcodes").Columns("C").ColumnWidth = getBarcodeWidthFirst
Worksheets("Barcodes").Columns("D").ColumnWidth = getBarcodeWidthFirst
'Worksheets("Barcodes").Columns("A:A").HorizontalAlignment = xlCenter
'Worksheets("Barcodes").Columns("B:B").HorizontalAlignment = xlCenter
'Worksheets("Barcodes").Columns("C:C").HorizontalAlignment = xlCenter
'Worksheets("Barcodes").Columns("D:D").HorizontalAlignment = xlCenter
Worksheets("Barcodes").Columns("A:D").HorizontalAlignment = xlCenter


End Sub


MfG Charlotte

Antwort 6 von BenjaminM vom 14.12.2021, 08:59 Options

Moin Charlotte,

danke das du dich dem angenommen hast!
Das sieht schon total super aus.

Nun hätte ich aber noch eine Bitte, ist es möglich den Code noch so anzupassen, das es dem Bsp. Blatt von der Seiteneinteilung entspricht?

Die Barcodes sollen halt auf eine Selbstklebeetiketten Bogen gedruckt werden, und da sind die Formate ja vorgegeben!

Kannst du da noch was schrauben?
Die Seitenränder des Bogens:
links, rechts 0,7
oben 2,2
unten 2
Und die einzel Feld größen sind:
Breite 48,5mm
Höhe 25,4mm

Und die zwei Zeilen zwischen den Barcodes müssten auch noch weg!(40 Etiketten auf dem kompletten Bogen)
Halt so wie in dem Bsp Blatt (dort ist die Seite auch so eingerichtet wie es sein soll).


Danke & Gruß
Benjae

Antwort 7 von Charlotte_S vom 14.12.2021, 12:00 Options

Hallo Benjae!

Zitat:
Die Barcodes sollen halt auf eine Selbstklebeetiketten Bogen gedruckt werden, und da sind die Formate ja vorgegeben!
Und genau deshalb wäre es ausgesprochen hilfreich, wenn Du die vollständige Bezeichnung Deines Etikettenbogens (- steht auf der Verpackung, manchmal sogar auf der Rückseite der Bögen) mitteilen könntest, z. B. Zweckform 3657 o. ä.

Zweckform 3657 ist für A4H, 297 mm x 210 mm, Seitenrand oben: 2,15 cm, unten: 0 cm (bzw. rechnerisch: 2,15 cm), links: 0,8 cm, rechts: 0,8 cm, 10 x 4 Etiketten mit Höhe: 2,54 cm, Breite: 4,85 cm.

MfG Charlotte

Antwort 8 von BenjaminM vom 14.12.2021, 12:18 Options

Hallo Charlotte,

sehr gerne, ich wuste nicht das die Bezeichnung so wichtig ist!

Etikettenbogen Marke:
HERMA
SuperPrint
Laser-Copy-Ink
No.4474

10x 4

Danke

Antwort 9 von Charlotte_S vom 14.12.2021, 17:05 Options

Hallo Benjae,

leider bin ich heute den ganzen Tag nicht dazu gekommen und auf die Schnelle schaffe ich das jetzt auch nicht mehr. Um die zwei leeren Zeilen (3, 4, 7, 8, 11, 12, ...) nicht zu erstellen, müsste ich mir den VBA-Code noch mal genau ansehen, vielleicht morgen vormittag.

Der Rest, nämlich (1) die Anpassung der Seitenränder und (2) die Anpassung der Barcode-Höhe, ist eigentlich "nur auszuprobieren".

(1) Die Anpassung der Seitenränder erfolgt, wenn ich das richtig verstanden habe, im VBA-Code mit

Worksheets("Barcodes").PageSetup.LeftMargin = Application.InchesToPoints(0.3)
Worksheets("Barcodes").PageSetup.RightMargin = Application.InchesToPoints(0.3)
Worksheets("Barcodes").PageSetup.TopMargin = Application.InchesToPoints(0.5)
Worksheets("Barcodes").PageSetup.BottomMargin = Application.InchesToPoints(0)

(2) Die Anpassung der Barcode-Höhe ist noch einfacher (VBA-frei möglich), da die Angaben im Tabellenblatt "Configuration" stehen und dort jederzeit geändert werden können.

Höhe Barcodefeld Reihe 1 50,25 (= D11)
Höhe Klartextfeld Reihe 1 22,5 (= D13)

Höhe Barcodefeld Reihe 2 50,25 (= D12)
Höhe Klartextfeld Reihe 2 22,5 (= D14)
werden derzeit nicht verwendet.


Wenn Du die Zeit nutzen willst, dann erstelle Dir mit der jetzigen Version 40 Barcodes, lösche die überflüssigen Zeilen raus, passe die Seitenränder an falls erforderlich (sie sind derzeit nämlich - auch in "Bsp" - auf 2,5/2,0/2,0/2,5 eingestellt) und taste Dich dann heran, wie die Barcode-Höhe verändert werden muss, damit alle 10 Barcode-Zeilen gut auf ein A4H-Blatt passen.

MfG Charlotte

Antwort 10 von Charlotte_S vom 15.12.2021, 13:07 Options

Hallo Benjae,

siehe http://www.file-upload.net/download-2080403/SN2288959_CID_Barcode_b....

Bearbeitet mit Excel2003.
Für genauere Tests, ob die Barcodes wirklich auf die Etikettenbögen passen, ob Höhen und Breiten stimmen usw. würde ich den Original-Font "Code-128-DH" benötigen, da ich zurzeit nur mit einem Ersatzfond arbeite, der anstelle des fehlenden Original-Fonts verwendet wird. Deshalb sehe ich z. B. für den Barcode SID 1100000001 immer nur "Á1100000001fÈ" und die Barcodes ragen wegen der größeren Zeichenbreite alle über die rechte Zellbrgrenzung hinaus.

Außerdem könnten auch in Abhängigkeit vom Drucker(-treiber) noch geringfügige Abweichungen entstehen.

MfG Charlotte

Antwort 11 von BenjaminM vom 16.12.2021, 10:45 Options

Hallo Charlotte,

Super vielen Dank für deine Arbeit,
war die letzten zwei Tage nicht online,
hab aber weiter gebastellt.
Mit der ersten Version von dir bin ich jetzt zu einem passablen Ergebnis gekommen,
es gibt nur noch ein paar Schöheitsfehler.

Achja, deine neue Version läuft leider nicht bei mir. :-(

Meinst du das es noch eine bessere Lösung gibt als diese

Private Sub Button_calculate_Click()

replaceBarcodeSheet

If getCount > 0 And getCount < getMaxCount Then

If getStartAt >= getGreatestNumber Then

setGreatestNumber getStartAt + getCount
setupBarcodePages getNeededPages(getCount), getStartAt, getCount
Txtbox_startAt.Text = Str(getGreatestNumber)
setPrinted (False)
ActiveWorkbook.Save
Range("3:4,7:8,11:12,15:16,19:20,23:24,27:28,31:32,35:36").Select
Selection.Delete Shift:=xlUp
Columns("A:D").Select
Selection.ColumnWidth = 24
Range("1:1,3:3,5:5,7:7,9:9,11:11,13:13,15:15,17:17,19:19").Select
Selection.RowHeight = 51
Range("2:2,4:4,6:6,8:8,10:10,12:12,14:14,16:16,18:18,20:20").Select
Selection.RowHeight = 23

With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.31496062992126)
.RightMargin = Application.InchesToPoints(0.31496062992126)
.TopMargin = Application.InchesToPoints(0.905511811023622)
.BottomMargin = Application.InchesToPoints(0.78740157480315)
.HeaderMargin = Application.InchesToPoints(0.511811023622047)
.FooterMargin = Application.InchesToPoints(0.511811023622047)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
End With
Range("A1").Select

Else

MsgBox "Fehler: Bitte geben Sie für 'Starte bei Barcode' einen Wert größer " + Str(getGreatestNumber) + " ein."

End If

Else

MsgBox "Fehler: Bitte geben Sie für 'Anzahl' einen Wert zwischen 0 und " + Str(getMaxCount) + " ein."

End If
End Sub

um die zwei Zeilen zwischen den Barcodes zu löschen?
Es funtz, es werden auch gleich die Seiten Parameter mitgegeben(Feldgrößen und Seitenränder).
Der Code erstellt die Barcodes und dann sieht man wie er rödelt um die Zellen zu löschen. Kann man das eleganter lösen?

Und mit dem Code den ich bis jetzt habe kann ich max. 40 Barcodes auf einmal erstellen
und müsste dann für vortlaufende jede Seite einzelnt drucken!

hatte die ganze Schose per hand geschrieben für bis zu 1000 Barcodes.
Dann sollte er die Zwischenzeilen löschen, und daraufhin zickte Excel ´97 mit:
Zuviele nicht zusammenhängende Zellen,
Vorgang kann nicht ausgeführt werden.
Blöd!

Wenn du noch mal Zeit findest, könntest du noch mal schauen?

Hier noch mal die aktuelle Datei

Antwort 12 von Charlotte_S vom 16.12.2021, 18:52 Options

Hallo Benjae,

ich finde es, zurückhaltend ausgedrückt, ein bisschen verwunderlich, wenn ich neben dem Dank für die erste Version und einem neuen Versuch von Dir (- Bemerkungen dazu weiter unten) zu der letzten Version nur den knappen Satz lese:

Zitat:
Achja, deine neue Version läuft leider nicht bei mir. :-(

Wenn Du nicht den kleinsten Hinweis lieferst, was funktioniert und was nicht funktioniert (und vielleicht sogar warum?), was Du - je nachdem - unternommen hast, um den Fehler zu finden oder zumindest einzugrenzen, dann hat das 2 Dinge zur Folge: Es wird auch für mich sehr schwer, den Fehler bzw. die Ursache des Nichtfunktionierens zu finden und ich könnte außerdem den Eindruck gewinnen, dass Dir nicht so sehr viel daran liegt.

Immerhin habe ich alles nach bestem Wissen überprüft, eingeschlossen den Download-Link und ob die heruntergeladene Datei auch so funktioniert, wie ich sie erstellt habe. Nachdem ich diese Überprüfung eben noch einmal wiederholt habe, komme ich zu demselben Ergebnis: Bei mir funktioniert es wie erwartet (in Excel 2003, was aber eher keine Rolle spielt).

Da ich so viel wie möglich von dem ursprünglichen Code beibehalten habe, obwohl ich verschiedene Dinge anders machen würde, insgesamt also nur die minimal nötigen Änderungen im Sinne der Anforderung vorgenommen habe, kann ich mir auch nicht erklären, warum plötzlich "gar nichts mehr" funktionieren soll.

Deshalb folgender Vorschlag: Für den Fall, dass die hochgeladene Datei beschädigt sein sollte oder nicht einwandfrei wieder heruntergeladen werden kann, lade ich sie neu hoch. (Bei dieser Gelegenheit bereinige ich vorher noch das Tabellenblatt "Configuration" und lösche ein von mir für Testzwecke eingefügtes Tabellenblatt "InchesToPoints", was ich zwar vergessen hatte, was aber die Funktionstüchtigkeit nicht beeinflusst.)

http://www.file-upload.net/download-2083673/SN2288959_CID_Barcode_b...

Und bitte Dich, es mit dieser Version noch einmal zu versuchen.
__________________________________________________

Zitat:
" ... bin ich jetzt zu einem passablen Ergebnis gekommen,
es gibt nur noch ein paar Schöheitsfehler.
...
Meinst du das es noch eine bessere Lösung gibt als diese ..."

Ich meine ja. Denn es ist sicherlich nicht die allerbeste Lösung, nicht benötigte Zeilen erst zu erstellen und anschließend wieder zu löschen. Das war mein Ansatz in AW9, ich bin am Montag nur nicht mehr dazu gekommen, es auch zu tun.
Zitat:
... und auf die Schnelle schaffe ich das jetzt auch nicht mehr. Um die zwei leeren Zeilen (3, 4, 7, 8, 11, 12, ...) nicht zu erstellen, müsste ich mir den VBA-Code noch mal genau ansehen, vielleicht morgen vormittag.

Da man andererseits überflüssige Zeilen löschen und Seitenränder und Zeilenhöhen auch anders setzen kann als mit VBA, nämlich über Menübefehle u. a., hatte ich für ein VBA-freies Ausprobieren der richtigen Werte vorgeschlagen:
Zitat:
Wenn Du die Zeit nutzen willst, dann erstelle Dir mit der jetzigen Version 40 Barcodes, lösche die überflüssigen Zeilen raus, passe die Seitenränder an ... und taste Dich dann heran, wie die Barcode-Höhe verändert werden muss, damit alle 10 Barcode-Zeilen gut auf ein A4H-Blatt passen.

Das war also nur eine "befristete Zwischenlösung" für Montagabend bis Dienstagmittag. Die letzte Version erstellt genau die Paare von Zeilen (Barcode + SID), die nötig und gewünscht sind, passt die Seitenränder, Formatierung und Ausrichtung in VBA an und erfüllt die Vorgaben (10 x 4 x 2,54 cm x 4,85 cm) bis auf wenige Hundertstel Millimeter.

Deshalb bin ich dafür, es mit dieser Version noch einmal zu versuchen. Falls wieder etwas nicht funktioniert, bitte möglichst genau angeben, was?

MfG Charlotte

Antwort 13 von BenjaminM vom 17.12.2021, 09:19 Options

Hallo Charlotte,

sorry, es war nicht meine Absicht dich oder deine Arbeit zu diskreditieren.

Ich bekomme folgenden Fehler!
Das/den Wort/Befehl "Replace" kennt Excel´97 scheinbar nicht, aber ich weiß auch nicht wofür das steht.
Wenn ich das "Replace" rausnehme, meckert Excel das die gesamte Funktion fehlerhaft ist.

Dann habe ich am Di. mit der ersten Version weiter gemacht, und deine Vorschlag mit dem "Zellen Löschen" verfolgt.

Hilft diese Fehlerbeschreibung?

Noch mal, sorry war nur ein bischen hilflos am Dienstag.

Gruß Benjae

Antwort 14 von BenjaminM vom 17.12.2021, 09:29 Options

Hallo Charlotte,

Wenn es jetzt nicht zuviel ist, hätte ich interesse an einer kürzeren Version des Codes!
Hab diese Version hier in meiner Firma von einem ehemaligen Angestellten. Und habe dann angefangen daran rumzubasteln.

Kam dann schnell an meine Grenzen, wollte hier aber nicht mit lehren Händen stehen!

Aber bitte nur wenn es keinen umstand macht!

Gruß Benjae

Antwort 15 von Charlotte_S vom 17.12.2021, 12:20 OptionsLösung

Lösung
Hallo Benjae,

hier eine Version ohne Replace(). Downloadlink:
http://www.file-upload.net/download-2085127/SN2288959_CID_Barcode_b...

MfG Charlotte

Antwort 16 von BenjaminM vom 17.12.2021, 14:04 Options

Hallo Charlotte,

hab vielen herzlichen Dank!

Die Version 3 funtz 100%ig!

Alles Super, vielen Dank für deine Aufopferung an diesem Projekt.

Gruß Benjae

Antwort 17 von Charlotte_S vom 17.12.2021, 16:38 Options

Bitte, gerne. Und danke auch für die Rückmeldung.

Gruß,
Charlotte

Ähnliche Themen

VBA - Pfadangabe
Tomschi  10.06.2008 - 97 Hits - 6 Antworten

VBA
Benjo_pont  03.07.2008 - 130 Hits - 2 Antworten

VBA Geburtstagsliste
fedjo  11.07.2008 - 87 Hits - 2 Antworten

VBA Formel
MarcR  08.08.2008 - 47 Hits - 2 Antworten

VBA
Chrissi_Li  21.08.2008 - 32 Hits - 5 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 11:26:25 2026