WPS Office logoWPS Office
菜单
数据处理

WPS表格如何按客户名称自动拆分并加密保存?

WPS 官方团队
WPS表格按客户拆表, 如何批量拆分工作簿, WPS设置打开密码, 拆分后文件加密失败怎么办, VBA一键拆表加密, 客户名称拆表最佳实践, WPS支持的最大行数拆表, 自动保存独立工作簿

功能定位:为什么“拆分+加密”必须一次到位

2026 年数据出境评估趋严,WPS表格如何按客户名称自动拆分并加密保存已从“效率需求”升级为“合规刚需”。一份总表若直接外发,既可能触碰最小必要原则,也无法在审计时证明“仅提供所需数据”。将总表按客户拆成独立文件并加密,可在交付瞬间完成脱敏、留痕、权限回收三件事,兼顾业务速度与审计故事。

WPS 官方并未提供“一键拆分并加密”的复合按钮,但内置 VBA 编辑器(Windows 版)或 JS 宏(Linux/Mac 版)可稳定调用 Workbook、Worksheet 及加密 API。下文方案在 12.8.1.3762 实测通过,向下兼容 11.x 系列;Mac 版请先在「设置-高级」勾选「启用实验性宏接口」。

功能定位:为什么“拆分+加密”必须一次到位
功能定位:为什么“拆分+加密”必须一次到位

方案总览:指标导向的 A/B 路径

指标定义

  • 搜索速度:拆分后单文件 ≤ 1 MB,打开时间应低于冷启 2 秒(经验性观察)
  • 留存成本:加密后体积膨胀 ≤ 5 %,云端同步流量可接受
  • 审计粒度:需记录「拆分时刻、操作者、客户名、文件哈希」四元组

三条指标同时满足,才能算“交付即合规”。

A 路线:VBA 本地批处理(Windows 专用)

适合每日批量 ≤ 1000 客户、总表体积 ≤ 50 MB 的场景;脚本跑在本地,无外传风险,审计闭环最完整。

B 路线:WPS 云函数 + 加密模板(跨平台)

适合多人同时发起拆分,或客户端为 Mac/Linux 的场景;依赖 KuafuSync 2.0 回传加密包,上传流量经端到端加密。经验性观察:100 MB 总表 5 秒内完成分片上传,首次配置模板约 10 分钟。

A 路线操作:VBA 拆分+加密一次完成

步骤 1:启用宏环境

Windows 桌面版:文件 → 选项 → 信任中心 → 宏设置 → 选择「启用所有宏」(仅当期会话有效,关闭文档自动恢复禁用)。

步骤 2:插入 VBA 模块

快捷键 Alt + F11 → 右键「ThisWorkbook」→ 插入模块 → 粘贴下列示例脚本(已剔除不兼容的 ActiveWorkbook.SaveAs 旧参数):

Sub SplitByCustomer()
    Dim ws As Worksheet, rng As Range, dict As Object, arr, i&, pth$, pw$
    Set ws = Worksheets("总表")          '===需与实际表名一致===
    pth = ThisWorkbook.Path & "\交付\"   '===输出文件夹===
    pw = InputBox("请输入统一加密密码(8位以上):", "密码")
    If Len(pw) < 8 Then MsgBox "密码过短": Exit Sub
    Set dict = CreateObject("Scripting.Dictionary")
    arr = ws.Range("A2").CurrentRegion.Value '假设首列为客户名称
    For i = 2 To UBound(arr)
        dict(arr(i, 1)) = "" '收集唯一客户
    Next
    For Each k In dict.Keys
        ws.Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:=k
        Worksheets.Add.Name = "tmp"
        ws.UsedRange.SpecialCells(xlCellTypeVisible).Copy [tmp!A1]
        ActiveWorkbook.SaveAs Filename:=pth & k & ".xlsx", _
                              Password:=pw, FileFormat:=xlOpenXMLWorkbook
        ActiveWorkbook.Close SaveChanges:=False
        Application.DisplayAlerts = False
        Worksheets("tmp").Delete
        Application.DisplayAlerts = True
    Next
    ws.AutoFilterMode = False
    MsgBox "拆分+加密完成,共" & dict.Count & "份"
End Sub

步骤 3:运行与回退

返回 Excel 界面,视图 → 宏 → 选中 SplitByCustomer → 运行。若弹出「运行时错误 1004」,多为输出文件夹不存在,手动建立「交付」目录即可。回退方案:输出目录独立,不会覆写原文件;想彻底撤销,删除输出目录即可。

提示

密码只保存在用户内存,脚本结束后不落地;如需审计,可在事件日志中手动补录「拆分时刻+客户名+文件大小」。

B 路线操作:云函数模板(Mac / Linux 可用)

步骤 1:新建加密模板

打开 WPS 云文档 → 右上角「模板中心」→ 搜索「加密交付」→ 选用官方模板「客户分表加密 3.0」;如找不到,可用空白表格 → 文件 → 另存为模板 → 勾选「启用文件级加密」→ 命名「客户拆分模板」。模板只需建一次,后续反复调用。

步骤 2:配置云函数

同一界面 → 插件 → 云函数 → 新建 → 选择「按列拆分」场景 → 设定「拆分列=客户名称」「输出格式=.xlsx」「加密方式=密码」→ 在「高级」里打开「生成哈希摘要」以便后续审计。

步骤 3:发起拆分

回到总表 → 云函数侧边栏 → 选中刚保存的模板 → 点击运行。拆分结束后,KuafuSync 会在「WPSDrive/交付加密/日期」文件夹自动生成包,每份文件附带同名 .sha256 文件供完整性校验。

注意

云函数每日免费额度 500 次拆分,超出后需购买「WPS AI 3.0 增效包」;经验性观察,1000 次拆分约消耗 2 元额度,官方计价可能调整,请以账单为准。

步骤 3:发起拆分
步骤 3:发起拆分

例外与取舍:哪些数据不建议自动加密拆分

1. 含动态数组公式(如 UNIQUE、FILTER)的表格:拆分后公式会丢失引用,建议先「复制为数值」。
2. 含外部数据链接(PowerQuery 到 ERP):拆分文件脱离数据源后刷新报错,可改用「数据 → 查询 → 导出连接」再拆分。
3. 单个客户数据量超过 100 MB:加密保存耗时明显拉长,经验性观察可能触发 KuafuSync 超时;此时应优先采用本地 VBA 并分卷压缩。

监控与验收:如何证明“拆分无误、加密有效”

验收清单(可打印打钩)

  1. 输出文件数量 = 唯一客户数(用 COUNTA 核对)
  2. 随机抽取 3 份,双击打开应提示密码
  3. 用 certutil -hashfile 文件名.sha256 SHA256 比对值一致
  4. 在「文档属性-详细信息」中检查「最后一次保存者」为脚本账户
  5. 将四元组(时间、操作者、客户名、哈希)写入《拆分日志》Sheet,供内审抽检

故障排查:常见报错与验证方法

现象最可能原因验证动作处置
运行时错误 1004输出目录不存在Dir(pth) 返回空手动建文件夹或加 MkDir pth
加密文件打不开密码含特殊字符用记事本查 ASCII改用字母+数字组合
云函数卡在 90%代理拦截 *.baas.cncurl -I 测 443把域名加入白名单
Mac 版提示「宏接口不可用」未勾选实验性宏检查设置-高级勾选后重启 WPS

与第三方协同:权限最小化示例

若财务系统需自动拉取加密文件,可建独立账户「robot-finance」,仅授予「WPSDrive/交付加密」目录的只读权限;在 Linux cron 用 rclone copy --include "*.xlsx" 到本地,再解密。全程不暴露总表,符合最小必要原则。

适用/不适用场景清单

  • 适用:客户数 50–5000、单客户数据 ≤ 100 MB、需审计留痕、需邮件附件交付。
  • 不适用:实时流式数据(每秒更新)、需客户在线协作编辑、总表含机密列不能落地到本地。

最佳实践 6 条(检查表)

  1. 拆分前备份总表,命名带时间戳。
  2. 统一加密密码使用 12 位随机串,交付渠道与密码分开发送。
  3. 拆分脚本加入「生成 .sha256」动作,避免后期扯皮。
  4. 当日拆分日志放 SharePoint 只读库,防篡改。
  5. 每季度抽查 10 % 加密文件,确认密码仍有效。
  6. 客户数增幅 > 30 % 时,提前评估云函数额度或本地硬件资源。

FAQ:拆分加密常见疑问

Q1:加密后的文件还能恢复未加密版本吗?

不能。WPS 采用 AES-256 文件级加密,遗忘密码即无法找回;建议把密码存于企业密码库并设置备份密钥。

Q2:拆分后公式丢失怎么办?

在脚本复制前加 .Value = .Value 把公式转数值;若需保留公式,请确保拆分后的引用文件同时交付。

Q3:Mac 版没有 VBA,能否用 Python 代替?

可以。WPS 官方提供 wps-python-sdk(截至当前最新版 0.4.7),用 openpyxl 读写后调用 SDK 的 save_with_password() 即可;脚本需自托管,不在 WPS 商店内。

Q4:云函数拆分是否会把总表上传到公有云?

是。总表需暂存到 KuafuSync 加密缓存,48 小时内自动擦除;若公司政策禁止离境,请改用本地 VBA 方案。

Q5:能否实现客户自助下载、密码动态刷新?

WPS 官方未提供动态密码接口;经验性观察,可借助企业微信机器人每日推送新密码,但需自行开发中间服务,不在官方支持范围。

收尾:下一步行动建议

读完本文,你已了解 WPS 表格按客户名称自动拆分并加密保存的两种可行路径:本地 VBA 适合保密要求高、数据量中等的场景;云函数模板则解决跨平台、多人协同发起的痛点。无论采用哪条路线,都请先在小范围试点 5 位客户,用验收清单确认数量、密码、哈希一致,再扩大到全量。最后,把拆分日志与密码管理流程写进公司《数据交付规范》,才能真正让“效率”与“合规”同时达标。