📖 目录导读
- 前言
- WPS定时导出脚本简介
- 为什么需要防火墙放行端口?
- 编写WPS定时导出脚本(VBA实例)
- Windows防火墙放行端口设置步骤(针对脚本网络传输)
- Linux防火墙放行端口设置(可选场景)
- 常见问题与问答(Q&A)
在日常办公中,WPS Office 已成为国内最主流的办公套件之一,许多用户需要将文档、表格或演示文件定时导出为 PDF、图片或其他格式,并自动上传到服务器、NAS 或共享文件夹,以实现自动化备份,当脚本需要通过网络传输文件时,防火墙往往会拦截这些连接,导致导出失败,本文将系统讲解 WPS定时导出脚本 的编写方法,并手把手教你完成 防火墙放行端口设置,确保自动化流程稳定运行,内容既兼顾新手操作,也包含高级技巧,符合百度、必应、谷歌的SEO规范。

WPS定时导出脚本简介
WPS 定时导出脚本通常基于 WPS宏(VBA) 或 JS宏 编写,配合 Windows 任务计划程序或 Linux 的 cron 定时执行,脚本的核心功能包括:
- 打开指定文档或文件夹内的所有文档;
- 执行导出操作(如另存为 PDF、图片、纯文本等);
- 将导出的文件移动到本地目录或通过网络传输到远程服务器。
常见应用场景:
- 每日自动将销售报表导出为 PDF 并发送到 FTP 服务器;
- 每小时将会议记录导出为图片并备份到 NAS;
- 每周自动导出合同模板并上传至企业网盘。
需要注意的是,如果脚本需要访问网络资源(如 FTP、HTTP、SMB 共享),则必须确保对应端口在防火墙中处于放行状态。
为什么需要防火墙放行端口?
防火墙是计算机安全的第一道防线,它会阻止未经授权的入站和出站流量,当 WPS 脚本尝试通过以下方式传输文件时,防火墙可能会拦截:
- FTP 传输:需要放行端口 21(控制)和被动模式端口范围(如 1024-65535)。
- HTTP/HTTPS 上传:需要放行端口 80 或 443。
- SMB/CIFS 共享:需要放行端口 445(Windows)或 139。
- 自定义 TCP/UDP 端口:如企业内网使用特定端口传输文件。
若不配置防火墙放行,脚本执行时会报错:“连接超时”“无法访问网络位置”“权限不足”等。防火墙端口设置 是定时导出脚本能否成功的关键步骤之一。
编写WPS定时导出脚本(VBA实例)
以下是一个简单实用的 VBA 脚本示例,功能为:定时打开当前目录下的所有“.docx”文件,导出为 PDF,并上传到 FTP 服务器。
1 打开 VBA 编辑器
在 WPS 文字中按 Alt+F11 进入 VBA 环境,插入一个新模块。
2 脚本代码
Sub ExportAndUpload()
Dim folderPath As String
Dim fileName As String
Dim doc As Document
Dim pdfName As String
Dim ftpServer As String
Dim ftpUser As String
Dim ftpPass As String
' 设置文件夹路径(可改为绝对路径)
folderPath = ThisDocument.Path & "\"
ftpServer = "ftp://192.168.1.100:21/"
ftpUser = "admin"
ftpPass = "123456"
' 遍历文件夹内所有 .docx 文件
fileName = Dir(folderPath & "*.docx")
Do While fileName <> ""
Set doc = Documents.Open(folderPath & fileName)
pdfName = Replace(fileName, ".docx", ".pdf")
' 导出为 PDF
doc.ExportAsFixedFormat OutputFileName:=folderPath & pdfName, _
ExportFormat:=wdExportFormatPDF
doc.Close SaveChanges:=False
' 上传 PDF 到 FTP (需引用 Microsoft XML, v6.0)
' 实际生产环境中建议使用 FTP 控件或 WinSCP 命令行
' 此处省略具体FTP上传代码(因篇幅限制)
fileName = Dir() ' 下一个文件
Loop
MsgBox "导出完成!"
End Sub
3 设置定时执行
- 将上述宏保存为
.docm或.dotm模板文件。 - 打开 Windows 任务计划程序,创建基本任务,触发器设为每天/每小时。
- 操作选择“启动程序”,程序填
"C:\Program Files (x86)\WPS Office\11.8.2.12345\office6\wps.exe",参数填/macro "ExportAndUpload"(具体路径需根据实际版本调整)。
Windows防火墙放行端口设置步骤
当脚本需要通过网络传输文件时,需手动放行对应端口,以下以 FTP(端口21) 为例,演示 Windows 防火墙设置。
1 打开高级安全防火墙
- 按
Win + R,输入wf.msc并回车。 - 或在控制面板 → 系统和安全 → Windows Defender 防火墙 → 高级设置。
2 添加入站规则(允许FTP控制端口)
- 在左侧点击“入站规则”,右侧点击“新建规则”。
- 规则类型选择“端口”,下一步。
- 选择“TCP”,特定本地端口输入
21。 - 选择“允许连接”,下一步。
- 勾选所有配置文件(域、专用、公用)或根据需要选择。
- 输入名称如“FTP Control Port 21”,完成。
3 添加出站规则(同样放行端口)
- 如果脚本作为客户端主动连接FTP服务器,需出站规则放行端口21。
- 在“出站规则”中重复上述步骤,允许TCP端口21。
4 被动模式端口范围
FTP被动模式下,服务器会另外开启一个随机端口(通常1024-65535),为了简化,可设置允许所有临时端口,或指定一个范围(如3000-4000),操作同上,端口输入 3000-4000。
5 放行WPS程序本身(更安全)
也可以创建一条规则直接放行 WPS 主程序(wps.exe)的所有网络访问:
- 新建规则 → 程序 → 此程序路径 → 浏览选择
wps.exe→ 允许连接。
完成以上步骤后,WPS 脚本即可正常通过 FTP 上传文件。
Linux防火墙放行端口设置(可选场景)
如果WPS脚本运行在Wine或Linux环境下,或目标服务器为Linux,可使用 iptables 或 firewalld 放行端口。
1 使用 firewalld(CentOS/RHEL 7+)
sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --permanent --add-port=3000-4000/tcp sudo firewall-cmd --reload
2 使用 iptables(通用)
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 3000:4000 -j ACCEPT
保存规则:sudo service iptables save
常见问题与问答(Q&A)
Q1:我已经放行了端口,但脚本依然报“连接超时”,怎么办?
A:首先检查目标服务器IP和端口是否可达(用telnet IP 端口测试),其次确认防火墙放行的是 出站规则(客户端)还是 入站规则(服务器),若是客户端脚本,只需要出站规则放行,FTP被动模式需放行服务器端指定端口范围。
Q2:WPS宏脚本无法自动运行?
A:确保宏安全性设置为“启用所有宏”,并在任务计划程序中使用绝对路径调用 WPS 可执行文件,参数格式为 /macro "宏名称",部分版本需配合 /m 参数。
Q3:能不能不开放端口,而用其他方式传输?
A:可以,推荐使用 SMB共享(需开放445端口)或 WebDAV(需开放443端口),或者使用 本地文件夹同步(如 OneDrive、坚果云),无需额外配置防火墙。
Q4:Linux上如何运行WPS宏?
A:WPS Linux版不支持VBA宏,但可通过 wps --macro 命令(部分版本)或借助Wine运行Windows版,更推荐在Linux下用Python结合 python-docx 和 pdfkit 实现导出,再配合cron定时。
Q5:如何查看脚本运行时的端口占用?
A:在Windows下用 netstat -ano | findstr 21;Linux下用 netstat -tlnp | grep 21,如果脚本正常运行但无连接,说明防火墙仍可能阻止,或目标地址错误。
本文围绕 WPS定时导出脚本防火墙放行端口设置 这一核心关键词,从脚本编写到防火墙配置,提供了完整的解决方案,关键要点:
- 脚本层面:利用 VBA 宏实现文档自动导出,并通过任务计划程序定时触发。
- 防火墙层面:根据传输协议(FTP/HTTP/SMB)放行对应端口,优先采用程序放行方式更安全。
- 排错思路:结合 telnet、netstat 等工具定位问题。
通过上述步骤,你将彻底告别因防火墙导致脚本失败的烦恼,实现 WPS 文档的自动化备份与分发,无论是个人办公还是企业部署,这套方法均能显著提升效率。
延伸建议:若对 VBA 不熟悉,可改用 WPS 的“JS宏”(基于JavaScript),或直接使用 Python + Win32com 替代,原理相同,防火墙设置则适用于任何需要网络传输的自动化脚本。
标签: 防火墙放行