【问题标题】:How to generate barcodes in excel worksheet如何在excel工作表中生成条码
【发布时间】:2016-11-24 15:27:54
【问题描述】:

只是一个简短的问题,如何在 Excel 工作表中生成条形码?条形码文本已在单元格中指定。

(不打算大量生成条形码,否则可以在 MS Word 中完成。)

【问题讨论】:

  • 只安装条形码字体?
  • @Comintern 是的,好点,但我不想要求每个人都安装一些东西......
  • 如果您不想安装字体,则必须以某种方式生成带有条形码的位图。但是,最终使用条形码字体 更容易,您可以使用类似 github.com/BdR76/barcode128.bas

标签: excel barcode vba


【解决方案1】:

选择条形码文本的写入范围:

然后运行以下脚本:

Sub INSERT_BARCODE()
    Const BarcodeWidth As Integer = 156
    Dim ws As Worksheet, WdApp
    Set ws = ActiveSheet
    Set WdApp = CreateObject("Word.Application")
    With WdApp.Documents.Add
        .PageSetup.RightMargin = .PageSetup.PageWidth - .PageSetup.LeftMargin - BarcodeWidth
        .Fields.Add(Range:=.Range, Type:=-1, Text:="DISPLAYBARCODE " & CStr(Selection.Value) & " CODE39 \d \t", PreserveFormatting:=False).Copy
    End With
    ws.PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False
    WdApp.Quit SaveChanges:=False
    Set WdApp = Nothing
End Sub

注意:

BR~

【讨论】:

  • 我在运行该代码时收到Error! Bookmark not defined 消息。
  • 我一定在 word.application 部分遗漏了一些东西。我在 Excel/Word 2013 上做。你在 2010 上?
  • 是的,我在 Word 2010 上。
  • 我没有深入研究。但根据 MSDN,此方法不适用于 word 2010。我不记得我在哪里读过一篇文章,它可能是 WORD 2010,只是没有使用“DISPLAYBARCODE”,而是使用了其他东西。我不记得了...
  • @JaneksBergs.. 除非您获得批准,否则软件安装通常会被阻止的财务团队中的工作人员不会这样做,因此必须在有限的资源范围内工作。
【解决方案2】:

这大大超出了您的需求,但您可以根据需要从中提取部分内容。

Sub Call_Barcode_Service()

Dim strResource As String
Dim strSize As String
Dim iHgt As Integer
Dim iWth As Integer
Dim iGap As Integer
Dim PictureGrab As String
Dim lngLastRow As Long

strSize = UCase(InputBox("How Big?", "Small, Medium or Large?", "L"))

Select Case strSize

    Case Is = "S"
        iWth = 150
        iHgt = 45
        iGap = 3


    Case Is = "M"
        iWth = 150
        iHgt = 60
        iGap = 4

    Case Is = "L"
        iWth = 240
        iHgt = 75
        iGap = 5

    Case Else
        iWth = 250
        iHgt = 75
        iGap = 5

End Select


Set sel = Selection.SpecialCells(xlTextValues)

Set news = Worksheets.Add()
news.Name = "Barcodes"
Set op = news.Range("A1")

For Each acc In sel
strResource = acc.Value

PictureGrab = "http://www.barcodesinc.com/generator/image.php?code=" & strResource & "&style=197&type=C128B&width=" & iWth & "&height=" & iHgt & "&xres=1&font=1"

Set sh = ActiveSheet.Shapes.AddShape(msoShapeRectangle, op.Left, op.Top, iWth, iHgt)

With sh

.Name = strResource
.Line.Visible = False
.Fill.UserPicture PictureGrab

End With

Set op = op.Offset(iGap + 1, 0).Range("A1")

Next

Range("G1").Select

End Sub

【讨论】:

  • 不错的一个。我也喜欢这个,适用于所有办公版本。但需要互联网连接,除非图片是静态的。
  • 是的,这是需要互联网访问的一个警告。我使用该代码运行 数百 行数据,并使用类似的 VBA 位生成 QR 码,以显示条形码和 QR 之间的数据密度差异。就像我说的那样,一个细胞的规格过高! :o)
【解决方案3】:

我在宏中使用 word :

Sub Macro1()
'
' Macro1 Macro
' Test Barcode
'
Dim codei As String
Dim codej As String

    For I = 1 To 1 '0
    For J = 1 To 2 '0
        codei = CStr(I)
        While Len(codei) < 2
           codei = "0" & codei
        Wend
        codej = CStr(J)
        While Len(codej) < 4
           codej = "0" & codej
        Wend
        codei = codei & codej
        Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
        PreserveFormatting:=False
    Selection.TypeText Text:="DisplayBarcode " & codei & " Code128 \t"
    Selection.TypeParagraph
    Selection.Fields.Update
    Next J
    Next I
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-13
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 2020-11-27
    相关资源
    最近更新 更多