一、实现后的效果如下
=PERSONAL.XLSB!jionlpadd(B1,"province") #获取省份的数据
=PERSONAL.XLSB!jionlpadd(B1,"city") #获取市的数据
=PERSONAL.XLSB!jionlpadd(B1,"county") #获取行政区划的数据
=PERSONAL.XLSB!addparser(B1,"name") #获取收件人的数据
=PERSONAL.XLSB!addparser(B1,"mobile") #获取收件人电话的数据
=PERSONAL.XLSB!addparser(B1,"fulladd") #获取补全后、含省市区的地址数据
上面用到了两个自定义函数,一个是jionlpadd,一个是addparser
二、实现方法
1.先用Python新建一个解析地址的API(直接在EXCEL的VB编辑器里面做没成功),Python的代码如下:
from flask import Flask, request, jsonify import jionlp app = Flask(__name__) @app.route('/parse_address', methods=['GET']) def parse_address(): value = request.args.get('value') parts = request.args.get('part', 'province,city,full_location') if not value: return jsonify({"error": "缺少参数 'value'"}), 400 # 使用 parse_location 解析地址 result = jionlp.parse_location(value) # 解析部分地址 parts = parts.split(',') response_list = [] if 'province' in parts: response_list.append(result.get('province', '')) if 'city' in parts: response_list.append(result.get('city', '')) if 'county' in parts: response_list.append(result.get('county', '')) if 'full_location' in parts: response_list.append(result.get('full_location', '')) return ", ".join(response_list) if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=5001)
运行上面的代码后,可在浏览器中测试效果,如下图:
2.打开 Excel.点击视图——点击宏——录制宏。在弹出的窗口中,选择存储宏的位置选择个人宏工作簿。给宏取一个名字,然后点击确定。点击停止录制,这将创建一个宏并自动将其存储在个人宏工作簿中。
3.按 Alt + F11 打开 VBA 编辑器。在左侧的 项目资源管理器 中,查找名为 VBAProject (PERSONAL.XLSB) 的项目。这个项目就是你个人宏工作簿。
4.展开 VBAProject (PERSONAL.XLSB),右键点击 Module1,选择 查看代码,然后可以将你要添加的 jionlpadd 函数代码粘贴到这里,并点击保存。
Function jionlpadd(x As String, y As String) As String Dim url As String Dim http As Object Dim response As String Dim parsedValue As String ' 构建请求的 URL url = "http://127.0.0.1:5001/parse_address?value=" & WorksheetFunction.EncodeURL(x) & "&part=" & y ' 创建 HTTP 请求对象 Set http = CreateObject("MSXML2.XMLHTTP") On Error GoTo ErrHandler ' 如果发生错误,跳到错误处理程序 http.Open "GET", url, False http.Send ' 获取响应内容 response = http.responseText ' 输出响应内容,用于调试 Debug.Print "Response: " & response ' 检查返回的响应内容并处理 If Len(response) > 0 Then ' 去除多余的空格或特殊字符 response = Trim(response) ' 直接返回解析结果 parsedValue = response Else parsedValue = "Error: Empty response" End If ' 返回解析后的结果 jionlpadd = parsedValue Exit Function ErrHandler: ' 错误处理 jionlpadd = "Error: " & Err.Description End Function
5.启用宏,在 Excel 中点击 文件 > 选项 > 信任中心 > 信任中心设置 > 宏设置。选择 启用所有宏 和 信任对 VBA 工程对象模型的访问
至此,就可以在所有的EXCEL表格,使用自定义的jionlpadd,对混合的收件地址数据进行解析和分离,得到自己想要的数据