Word
使用 VBA 创建条形码对象

 Standard 或更高

使用VBA实现条形码的自动化处理

Word 365, 2024, 2021, 2019, 2016, 2013, 2010, 2007, 2003
您可以使用 VisualBasic for Applications (VBA) 解决 Word 中的许多问题。 在此,我们将向您展示如何使用 VBA 嵌入、使用和删除 ActiveBarcode 控件:

将 ActiveBarcode 控件嵌入文档:
在本例中,将在光标位置放置一个条形码控件。然后,您可以使用变量 ab 修改对象:
Dim ab As Object
Set ab = Selection.InlineShapes.AddOLEObject(ClassType:="ACTIVEBARCODE.BarcodeCtrl.1",
  FileName:="", LinkToFile:=False, DisplayAsIcon:=False)
使用变量 ab 设置对象的标准属性(高度、宽度):
ab.Width = 200
ab.Height = 120
您可以使用属性 OLEFormat.Object 访问条形码对象的 属性 方法
ab.OLEFormat.Object.Type = 6
ab.OLEFormat.Object.Text = "987698769812"
您还可以通过创建和使用一个变量(例如名为 abObject 的变量),以更简洁的方式访问属性:
Dim abObject As Object
With ab.OLEFormat
  .Activate
  Set abObject = .Object
End With

abObject.Type = 6
abObject.Text = "987698769812"
通过以下调用,您可以将条形码对象转换为 InlineShape。请注意,转换后不能更改条形码。
ab.ConvertToShape
如果您不再需要该控件,可以将其从文档中删除:
 ab.Delete
提示:如果需要 Windows 在宏中处理即将发生的事件(通常称为 KeepWindowsAlive),您可以使用以下 VBA 函数强制进行处理:
DoEvents
这可能是必要的,例如,如果控件必须重新绘制。

ActiveBarcode: Info
在页面上添加条形码的 Word 宏 (VBA)。
对于 Word 365, 2024, 2021, 2019, 2016, 2013, 2010
此宏演示了如何为包含可变内容和页码的每一页添加一个条形码。

在 Word 邮件合并中使用条形码

Word 365, 2024, 2021, 2019, 2016, 2013, 2010, 2007, 2003

1


ActiveBarcode: 在 Word 邮件合并中使用条形码.
打开现有邮件合并文档或创建新文档。
2


将条形码对象添加到邮件合并文档中。将其放置在文档中需要的位置,并设置对象的属性,如条形码类型和大小。

例如,看起来就像下面的截图。请注意条形码对象的名称(此处用黄色突出显示)。通常是 Barcode1。 ActiveBarcode: Barcode, Word


3


邮件合并需要一个宏。您可以添加以下宏。将其复制到剪贴板,然后粘贴到 Word 的 Visual Basic for Applications 编辑器中:
Sub MailMerge_example_with_ActiveBarcode()
 ' Macro shows how to print barcodes in a mail merge.
 if MsgBox("Do you want to print mail merged documents?", vbYesNo, "Question") = vbYes Then
   'counter to zero
   num = 0
   'first record is number one
   ActiveDocument.MailMerge.DataSource.ActiveRecord = 1
   Do
    ' Fill ActiveBarcode text property now
    ActiveDocument.Barcode1.Text = ActiveDocument.MailMerge.DataSource.DataFields("Productcode").Value
    ' do not prompt for printing...
    Options.PrintBackground = True
    ' print page
    ActiveDocument.PrintOut
    ' recognize old record
    lastone = ActiveDocument.MailMerge.DataSource.ActiveRecord
    ' select next record
    ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
    'count
    num = num + 1
    ' check if there are new ones
   Loop While ActiveDocument.MailMerge.DataSource.ActiveRecord <> lastone
   ' notify user
   MsgBox (Str(num) + " pages printed!")
 End If
 End Sub

4


结果如下所示。在截图中,你还可以看到插入宏的位置。 ActiveBarcode: Barcode, Word


5


现在将宏调整为邮件合并文档:

如果您的条形码对象名称不是 Barcode1,请在宏中更改 - 屏幕截图中左侧的黄色标记。

现在,您可以更改数据源中的字段名,该字段名将用于条形码。本例中使用的是 Productcode - 屏幕截图中右侧的黄色标记。更改引号内的名称。 ActiveBarcode: Barcode, Word


6


保存文档并启动宏进行测试打印。

提示: 开始测试打印时打印少量数据,以便在出错时减少错印。 ActiveBarcode: Barcode, Word


7


完成。

Info 如果您将宏放在 Normal.dot 中,而不是文档本身,则执行宏时文档必须不处于设计模式。否则将导致错误。因此,请在运行宏之前关闭设计模式。