wps或office的word接入豆包API(VBA版本)

直接上代码,由于时间匆忙,以后写个详细的教程

#If VBA7 Then
    Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
#Else
    Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
#End If

Sub GetSelectedTextAndCallDouBaoAPI()
    Dim selectedText As String
    Dim apiUrl As String
    Dim apiKey As String
    Dim requestBody As String
    Dim http As Object
    Dim responseText As String
    
    ' 获取当前选中的文本
    On Error Resume Next
    selectedText = Selection.Text
    On Error GoTo 0
    
    If selectedText = "" Then
        MsgBox "请先在文档中选择一段文字!", vbExclamation
        Exit Sub
    End If
    
    ' 设置API相关信息
    apiUrl = "https://ark.cn-beijing.volces.com/api/v3/chat/completions"
    apiKey = "xxx-xxx-xxxx" ' 请替换为你的实际API密钥
    
    ' 转义特殊字符
    selectedText = Replace(selectedText, """", "\""")   ' 转义双引号
    selectedText = Replace(selectedText, "\", "\\")     ' 转义反斜杠
    
    ' 构建请求体(根据实际API文档调整)
    requestBody = "{""model"":""xxxx-xxx-xxx"",""messages"":[{""role"":""user"",""content"":""" & selectedText & """}]}"
    ' 清除字符串中的回车和换行符
    requestBody = Replace(requestBody, vbCrLf, "")
    requestBody = Replace(requestBody, vbCr, "")
    requestBody = Replace(requestBody, vbLf, "")
    
    ' 打印调试信息
    Debug.Print "Authorization: Bearer " & apiKey
    Debug.Print "Request Body: " & requestBody
    
    ' 创建HTTP请求对象
    Set http = CreateObject("MSXML2.XMLHTTP")
    
    ' 发送POST请求
    With http
        .Open "POST", apiUrl, False
        .setRequestHeader "Content-Type", "application/json"
        .setRequestHeader "Authorization", "Bearer " & apiKey ' 确保API密钥通过Authorization头传递
        .send requestBody
        
        ' 获取响应文本
        responseText = .responseText
        Debug.Print "Response: " & responseText
    End With
    
    ' 检查并处理响应
    If InStr(responseText, "error") > 0 Then
        MsgBox "API调用失败: " & responseText, vbCritical
        Exit Sub
    End If
    
    ' 解析结果(根据实际API返回格式调整)
    resultContent = ParseResponse(responseText)
    
    ' 插入结果到文档
    If resultContent <> "" Then
        Selection.InsertAfter vbNewLine & "豆包回复:" & vbNewLine & resultContent
    Else
        MsgBox "API返回结果解析失败111"
    End If
End Sub

Function ParseResponse(responseText As String) As String
    ' 自定义解析逻辑(根据实际API返回格式调整)
    Dim contentTag As String
    Dim StartPos As Long
    Dim EndPos As Long
    
    ' 示例解析方式:查找 "content": "..." 模式
    contentTag = """content"":"""
    StartPos = InStr(responseText, contentTag)
    
    If StartPos > 0 Then
        StartPos = StartPos + Len(contentTag) + 1 ' 跳过引号
        EndPos = InStr(StartPos, responseText, """")
        If EndPos > StartPos Then
            ParseResponse = Mid(responseText, StartPos, EndPos - StartPos)
            ' 处理转义字符
            ParseResponse = Replace(ParseResponse, "\n", vbNewLine)
            ParseResponse = Replace(ParseResponse, "\""", """")
        End If
    End If
End Function

代码中有两个参数需要替换,一个是apikey,另一个是model

把代码复制到wps或者word的VBA编辑器中即可运行

效果如下:

### 豆包API接入WPS办公软件 #### 接入概述 为了实现豆包APIWPS办公软件的有效集成,开发者需遵循一系列特定的技术指导原则。这一过程不仅涉及API接口的设计和调用,还涵盖了如何确保两者之间的高效协作以及用户体验的优化[^1]。 #### 技术准备 在开始之前,确保已具备必要的技术条件,包括但不限于: - 完整安装并激活最新版本WPS Office套件; - 获取有效的豆包API访问密钥; - 设置好本地开发环境,推荐使用Python作为编程语言,因为其简洁性和强大的库支持有助于加速开发进程[^2]。 #### API接口设计 针对此次需求,重点在于理解并适配OpenAI API接口特性,这将是连接豆包服务至WPS的关键桥梁之一。具体来说,应当关注以下几个方面: - **请求结构**:定义清晰的数据传输协议,确保每次请求都能携带足够的参数信息给到服务器端处理。 - **响应解析**:对于来自豆包的服务反馈,要能够快速准确地提取有用的信息,并将其转换成适合展示的形式返回给用户界面层。 ```python import requests def call_douban_api(api_key, query_params): url = "https://api.douban.com/v2/book/isbn" headers = {"Authorization": f"Bearer {api_key}"} response = requests.get(url, params=query_params, headers=headers) if response.status_code == 200: return response.json() else: raise Exception(f"Failed to fetch data from Douban API: {response.text}") ``` 此段代码展示了如何构建一个简单的函数用于发起HTTP GET请求向豆包发送查询指令,并接收JSON格式的结果集。 #### 用户交互逻辑 考虑到最终目的是为了让广大使用者享受到更加便捷的功能扩展,在实际操作过程中还需要特别注意UI/UX方面的考量。比如当触发某个按钮点击事件时自动加载相关书籍资料;是提供直观易懂的帮助提示引导新接触此类功能的朋友顺利完成首次尝试等。 #### 错误处理机制 鉴于任何网络通信都存在不确定性因素影响成功率的情况发生概率不低的事实,因此有必要提前规划一套完善的错误捕捉及恢复策略。例如遇到超时未响应的情形下及时给出友好型报错页面告知当前状态的同时建议重试次数限制;又者是记录日志文件便于后期排查问题所在位置以便于维护人员迅速定位修复漏洞等问题[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值