软件系统

BarTender VB 脚本说明和场景示例

Admin2026年9月18日

BarTender 里面叫 VBScript(VB 脚本),不是 VB6/VBA,是微软 VBS,语法轻量;核心约定:给 Value 赋值就是输出到当前数据源。 两种用法:

  1. 数据源类型 = VB 脚本:这个文本 / 条码的值由脚本生成;
  2. 普通数据源 → 转换 → VB 脚本:对原始数据做二次加工。

✅ 基础语法要点(VBS)

' 注释用单引号
Dim a,b '定义变量,不区分类型,弱类型
a = 10
b = "ABC"

' 运算符
' 算术:+ - * / Mod
' 字符串连接:& (推荐,不要用+,容易数字串混淆)
' 比较:= <> > >= < <=
' 逻辑:And Or Not

' 分支
If 条件 Then
...
ElseIf 条件 Then
...
Else
...
End If

' 循环(较少在BT标签脚本里用)
For i=1 to 10
Next

BarTender 内置专用函数

Field("字段名") '读取数据库字段
Value("数据源名称") '读取模板上【命名数据源】的值
Value = "输出内容" '⭐给Value赋值 = 当前脚本输出结果

Objects("对象名") '获取模板上对象(文本、图片),控制颜色、可见性、图片路径

原生 VBS 常用函数

Format(Now,"yyyy-MM-dd") '日期格式化
Left(str,n) / Right(str,n) / Mid(str,start,len) 截取字符串
Len(str) 字符串长度
Trim() RTrim() LTrim() 去空格
CDbl() CInt() 字符串转数字

✅ 使用入口(操作步骤)

  1. 双击标签上【文本 / 条码】→ 数据源
  2. 方案 A:数据源类型改为 Visual Basic 脚本 → 编辑脚本
  3. 方案 B:普通数据源(数据库 / 输入)→ 切换到【转换】→ 勾选 VB 脚本 → 编辑
  4. 脚本编辑器:写代码,点【验证】检查语法,预览 F5 测试

脚本分 3 种模式:

  • 单行表达式:简单一句 Value=Field("A") & "-" & Field("B")
  • 多段脚本:完整多行 If、变量
  • 事件脚本:OnPrePrompt / OnSerialize 打印前事件,适合控制对象显隐、颜色、图片切换

✅ 常用场景 + 完整示例

场景 1:数值自动计算

模板:新建文本,命名数据源:NetWeight(净重) 新建另一个文本,数据源类型 VB 脚本:

Dim net, gross
net = CDbl(Value("NetWeight"))
gross = net + 0.5
Value = Format(gross,"0.00") '保留2位小数输出

含义:毛重 = 净重 + 0.5kg

场景 2:字符串拼接、截取,条码组合

数据库字段:SKU、Batch,拼接成条码内容

Dim sku,batch
sku = Trim(Field("SKU"))
batch = Trim(Field("Batch"))
Value = sku & "-" & batch

截取 SKU 前 8 位:

Value = Left(Trim(Field("SKU")),8)

场景 3:条件判断,不同文字输出

Dim level
level = Field("Level")
If level = "A" Then
Value = "一等品"
ElseIf level = "B" Then
Value = "二等品"
Else
Value = "次品"
End If

场景 4:空值处理,为空就不打印内容

Dim sn
sn = Trim(Field("SN"))
If sn = "" Then
Value = "" '空字符串,标签空白
Else
Value = sn
End If

场景 5:控制对象属性

这个不是数据源脚本,是模板事件脚本,可以控制其他对象显示 / 隐藏、颜色、图片切换

' 如果等级A,文本1显示红色,否则黑色
Set txt = Objects("Text 1")
If Field("Level")="A" Then
txt.TextColor = btColor.Red
Else
txt.TextColor = btColor.Black
End If

条件隐藏对象:

Set txt = Objects("Text 1")
If Field("Remark")="" Then
txt.Visible = False '隐藏
Else
txt.Visible = True
End If

场景 6:日期格式化

Value = Format(Now,"yyyyMMdd") '输出20260918

✅ 典型业务使用场合总结

  1. 字段运算:重量、数量、箱数自动计算(毛重、净重、单箱数量)
  2. 字符串处理:截取、拼接、补零、清洗数据库多余空格,生成条码内容
  3. 条件文本:根据数据库字段自动打印 “合格 / 不合格”、等级、警示文字
  4. 动态样式:根据数据自动切换文字颜色、显示 / 隐藏对象、切换图片(logo)
  5. 数据校验:打印前校验编号格式,非法时置空或者终止打印
  6. 序列号特殊编码:16 进制、非标准流水号生成