Monday, June 8, 2026

word2010工具栏嵌入deepseek来检测书写语法

 1、创建宏

 一、前期准备

    获取API密钥  

1. 访问 DeepSeek 官网:https://platform.deepseek.com
2. 注册/登录账号
3. 进入控制台:API Keys
4. 创建新的API密钥并保存

启用Word开发工具 

    1. 文档 → 选项 → 自定义功能区
    2. 右侧勾选「开发工具」
    3. 确定

二、创建VBA代码

    打开VBA编辑器      

1. 点击「开发工具」选项卡
2. 点击「Visual Basic」

按 Alt + F11

添加引用 

1. 工具 → 引用
2. 勾选:
   ☑ Microsoft XML, v6.0
   ☑ Microsoft VBScript Regular Expressions 5.5
3. 确定

创建新模块 

    1. 插入 → 模块
    2. 粘贴以下代码

三、完整代码

 Option Explicit

' API配置(请替换为你的真实API密钥)
Private Const API_KEY As String = "your_api_key_here"
Private Const API_URL As String = "https://api.deepseek.com/v1/chat/completions"
Private Const MODEL_NAME As String = "deepseek-chat"

' 主函数:检查选中文本的病句和错别字
Sub CheckGrammarWithDeepSeek()
    On Error GoTo ErrorHandler
    
    ' 1. 检查是否选中文本
    If Selection.Type = wdSelectionIP Then
        MsgBox "请先选择要检查的文本段落!", vbExclamation, "提示"
        Exit Sub
    End If
    
    Dim selectedText As String
    selectedText = Selection.Text
    
    ' 2. 长度保护(DeepSeek上下文约8K token,中文约4000字)
    If Len(selectedText) > 5000 Then
        If MsgBox("选中文本较长(约" & Len(selectedText) & "字符),可能影响处理速度。" & vbCrLf & _
                  "建议分批量检查。是否继续?", vbYesNo + vbQuestion, "文本过长") = vbNo Then
            Exit Sub
        End If
    End If
    
    ' 3. 显示状态栏提示
    Dim oldStatusBar As Boolean
    oldStatusBar = Application.DisplayStatusBar
    Application.DisplayStatusBar = True
    StatusBar = "正在连接AI进行语法检查..."
    
    ' 4. 创建HTTP对象
    Dim http As Object
    Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    ' 设置超时(毫秒):解析、连接、发送、接收
    http.setTimeouts 30000, 60000, 60000, 120000
    
    ' 5. 构建系统提示(内核:只报告明显必须改正的错误)
    Dim systemPrompt As String
    systemPrompt = "你是一个严格的中文校对专家。请只指出用户文本中**明显且必须改正**的错误,包括:" & vbCrLf & _
                   "1. 错别字(如同音字、形近字误用,例如:的/地/得混淆、'在'写成'再'等)" & vbCrLf & _
                   "2. 病句(语序错误、主谓搭配不当、成分缺失导致语句不通)" & vbCrLf & _
                   "3. 标点符号严重错误(如句号缺失导致句子粘连)" & vbCrLf & _
                   "4. 重复或遗漏关键词汇" & vbCrLf & vbCrLf & _
                   "忽略轻微的修辞、风格问题(如口语化表达、重复虚词等)。" & vbCrLf & _
                   "输出格式要求(严格遵守):" & vbCrLf & _
                   "如果没有错误,只输出:未发现必须改正的错误。" & vbCrLf & _
                   "如果有错误,每一条错误按照以下格式列出:" & vbCrLf & _
                   "----------------------------------------" & vbCrLf & _
                   "原文:[有错误的原句或短语]" & vbCrLf & _
                   "类型:[错别字/病句/标点/重复遗漏]" & vbCrLf & _
                   "修改建议:[正确写法]" & vbCrLf & _
                   "说明:[简短的错误解释]" & vbCrLf & _
                   "----------------------------------------" & vbCrLf & _
                   "注意:不要输出任何额外说明、开场白或结束语,直接输出检查结果。"
    
    ' 6. 构建请求体(温度设为0.2,保证结果稳定)
    Dim requestBody As String
    requestBody = "{""model"":""" & MODEL_NAME & """," & _
                  """messages"":[" & _
                  "{""role"":""system"",""content"":""" & SafeJsonEncode(systemPrompt) & """}," & _
                  "{""role"":""user"",""content"":""" & SafeJsonEncode(selectedText) & """}" & _
                  "],""temperature"":0.2,""max_tokens"":1500}"
    
    StatusBar = "正在提交请求..."
    
    ' 7. 发送请求
    With http
        .Open "POST", API_URL, False
        .setRequestHeader "Content-Type", "application/json; charset=UTF-8"
        .setRequestHeader "Authorization", "Bearer " & API_KEY
        .send requestBody
    End With
    
    StatusBar = "正在解析结果..."
    
    ' 8. 处理响应
    If http.Status = 200 Then
        Dim responseText As String
        responseText = ParseResponseImproved(http.responseText)
        
        ' 在Word中插入结果(保留原文本格式)
        Selection.Collapse Direction:=wdCollapseEnd
        Selection.InsertAfter vbCrLf & vbCrLf & "【DeepSeek语法检查结果】" & vbCrLf
        Selection.InsertAfter String(50, "=") & vbCrLf
        Selection.InsertAfter responseText
        Selection.InsertAfter vbCrLf & String(50, "=") & vbCrLf
        
        MsgBox "检查完成!", vbInformation, "成功"
    Else
        Dim errorDetail As String
        errorDetail = ExtractApiError(http.responseText)
        MsgBox "API请求失败:" & http.Status & " " & http.statusText & vbCrLf & _
               "详细信息:" & errorDetail, vbCritical, "错误"
    End If
    
    ' 9. 恢复状态栏
    StatusBar = ""
    Application.DisplayStatusBar = oldStatusBar
    Exit Sub
    
ErrorHandler:
    StatusBar = ""
    Application.DisplayStatusBar = oldStatusBar
    MsgBox "运行时错误:" & Err.Description & vbCrLf & "错误编号:" & Err.Number, vbCritical, "异常"
End Sub

' 安全JSON编码(处理所有特殊字符)
Private Function SafeJsonEncode(ByVal InputText As String) As String
    Dim result As String
    Dim i As Long
    Dim ch As String
    
    result = ""
    For i = 1 To Len(InputText)
        ch = Mid(InputText, i, 1)
        Select Case ch
            Case "\": result = result & "\\"
            Case """": result = result & "\"""
            Case vbCr: result = result & "\r"
            Case vbLf: result = result & "\n"
            Case vbTab: result = result & "\t"
            Case vbBack: result = result & "\b"
            Case vbFormFeed: result = result & "\f"
            Case Else
                ' 中文等Unicode字符无需转义,直接保留
                result = result & ch
        End Select
    Next i
    SafeJsonEncode = result
End Function

' 改进的JSON解析(处理多行、转义字符)
Private Function ParseResponseImproved(ByVal jsonText As String) As String
    On Error GoTo ParseErr
    
    ' 使用正则提取 "content" 字段的内容(支持转义引号和换行)
    Dim regex As Object
    Set regex = CreateObject("VBScript.RegExp")
    ' 模式说明:匹配 "content": " ... " ,其中内容可以包含转义符 \"
    regex.Pattern = """content""\s*:\s*""((?:[^""\\]|\\.)*?)""(?=\s*[,}])"
    regex.Global = False
    regex.MultiLine = True
    regex.IgnoreCase = False
    
    If regex.Test(jsonText) Then
        Dim matches As Object
        Set matches = regex.Execute(jsonText)
        Dim content As String
        content = matches(0).SubMatches(0)
        ' 还原转义串行
        content = UnescapeJsonString(content)
        ParseResponseImproved = Trim(content)
    Else
        ' 备用解析:查找 finish_reason 判断是否成功
        If InStr(jsonText, "finish_reason") > 0 Then
            ParseResponseImproved = "API响应解析失败,但请求可能已处理。原始片段:" & vbCrLf & Left(jsonText, 300)
        Else
            ParseResponseImproved = "无法解析API响应,请检查API密钥或网络。"
        End If
    End If
    Exit Function
    
ParseErr:
    ParseResponseImproved = "解析响应时出错:" & Err.Description & vbCrLf & "前200字符:" & Left(jsonText, 200)
End Function

' 还原JSON转义字符串
Private Function UnescapeJsonString(ByVal str As String) As String
    Dim result As String
    Dim i As Long
    
    result = ""
    i = 1
    While i <= Len(str)
        If Mid(str, i, 1) = "\" And i < Len(str) Then
            Dim nextChar As String
            nextChar = Mid(str, i + 1, 1)
            Select Case nextChar
                Case "n": result = result & vbCrLf: i = i + 2
                Case "r": result = result & vbCr: i = i + 2
                Case "t": result = result & vbTab: i = i + 2
                Case """": result = result & """": i = i + 2
                Case "\": result = result & "\": i = i + 2
                Case "u": ' 简单处理Unicode转义(如 \u4e2d),直接忽略并跳过6个字符
                    result = result & "[Unicode]": i = i + 6
                Case Else: result = result & "\": i = i + 1
            End Select
        Else
            result = result & Mid(str, i, 1)
            i = i + 1
        End If
    Wend
    UnescapeJsonString = result
End Function

' 提取API返回的错误信息
Private Function ExtractApiError(ByVal jsonText As String) As String
    On Error Resume Next
    Dim regex As Object
    Set regex = CreateObject("VBScript.RegExp")
    regex.Pattern = """message""\s*:\s*""([^""]+)"""
    If regex.Test(jsonText) Then
        ExtractApiError = regex.Execute(jsonText)(0).SubMatches(0)
    Else
        ExtractApiError = "无详细错误信息"
    End If
End Function

' 可选辅助函数:检查整个文档
Sub CheckWholeDocument()
    Selection.WholeStory
    CheckGrammarWithDeepSeek
End Sub

' 可选辅助函数:检查当前段落
Sub CheckCurrentParagraph()
    Selection.Paragraphs(1).Range.Select
    CheckGrammarWithDeepSeek
End Sub

四、另存为(另存选项) 启用宏的模板,扩展名为dotm,将此模板保存在word的templates位置。在word中,文档-选项-加载项-模板-添加,选择刚新建的模板。

五、在word中,自定义快速访问工具栏,选择宏,添加刚新建的宏到快捷访问栏。

六、用法。选中文本,电极自定义工具栏的宏命令用来检测选中文本或全文。

Monday, June 1, 2026

163 邮箱提示 Unsafe Login 的拦截问题-workbuddy中163邮箱IMAP登录

 # 登录成功后,发送 IMAP ID 命令声明客户端信息
client._simple_command('ID', '("name" "YourAppName" "version" "1.0" "vendor" "YourVendor")')
# 随后再执行 SELECT 操作
client.select_folder('INBOX')

Monday, May 18, 2026

Firefox中禁用Alt键

进入 about:config。

搜索 ui.key.menuAccessKey。

双击将数值改为 0(0 代表禁用),重启浏览器后按 Alt 键就不会再触发菜单了。

Sunday, May 10, 2026

windows下用小狼毫输入法,任务栏会卡顿的佬看这里

 1. 在Windows设置中打开 时间和语言->输入->高级键盘设置 勾选允许我为每个应用窗口使用不同的输入法。
2. 还有更改用户文档夹中weasel.custom.yaml里面的 “style/display_tray_icon” 为 false。
这样就不会卡住了。

https://linux.do/t/topic/1329559

Friday, May 8, 2026

Word中如何删除目录页的页码

 word中插入目录之后想要为每页添加页码,如果我们直接添加页码的话会出现目录是第一页,正文部分的页码是从2开始而不是1,用下面的方法就可以解决

首先让文档中的所有符号可见

第一步,把目录下的分页符删除,此时正文会跑到目录页来,通过回车使正文部分回到下一页,在插入的目录下方插入一个分节符(下一页),分节符在菜单栏下的布局里面找到分隔符,再选择分节符(从下一页开始)

第二步在正文页双击页脚,点击工具栏里的“链接到前一节”取消选中,默认是选中的,然后点击工具栏左方的页码,选择“当前位置”,“普通数字2”,正文部分的页码就出现了,如果你的页码是0,那么就点击一下工具栏中的“页码”,选择“编辑页码格式”,找到页码编号,设成1就可以了,关闭页眉和页脚设置。

最后不要忘记更新目录。

 https://www.cnblogs.com/shellpicker/p/10131118.html

Saturday, May 2, 2026

在 VirtualBox 中用iso创建新的虚拟机

一、先新建虚拟机,一般采用默认设置即可。

二、导入iso文档。

1. 打开虚拟盒子。
2、右键单击虚拟机并选择“设置”选项。
3、单击存储。
4、在“存储驱动器”部分下,选择光盘(空)项。
5、在“属性”部分下,单击光盘图标并选择选择磁盘文档按钮。
6、选择ISO文档。
7、单击打开按钮。
8、(可选)选中Live CD/DVD选项以保持 ISO 安装,即使来宾操作系统试图将其弹出。
9、(可选)选中Hot-pluggable选项以使虚拟驱动器显示为可热插拔的外围设备。
10、单击确定按钮。
完成这些步骤后,ISO 文档将挂载到虚拟机。如果这是安装媒体,安装程序将出现在访客设备上。如果将映像连接到带有操作系统的虚拟机,则该磁盘将出现在操作系统中。  如果要卸载 ISO 文档,请在“存储”设置中单击“选择磁盘文档”按钮,然后选择“从虚拟驱动器中删除磁盘”选项。  

https://www.xitongbuluo.com/jiaocheng/74579.html


virtualbox如何导入vdi格式文件生成新的虚拟机

1. 首先打开Oracle VirtualBox,进入界面,然后点击新建图标,开始创建新的虚拟机。
2. 输入虚拟机名称及存放位置,类型,版本
3. 点击下一步,输入内存大小,这里默认输入2048MB
4. 添加虚拟磁盘,这里有三个选项(不添加虚拟硬盘,现在创建虚拟硬盘,使用已有虚拟硬盘),由于我们已经有从其他地方复制过来的VDI磁盘文档,故只需选择使用已有的虚拟硬盘文档,点击创建
5. 点击左侧Anroid9虚拟机图标,启动虚拟机
6. 进入grub模式引导,选择kernel /android-9.0-42/kernel root=/dev/ram0 SRC=/adnroid-9.0-r2
7. 按b 重启(按e可以根据情况编辑)
可以将默认的grub edit> kernel /android-9.0-rc2/kernel quiet root=/dev/ram0> ....
修改为:
grub edit> kernel /android-9.0-rc2/kernel quiet root=/dev/ram0> .... nomodeset xforcevesa
8. 启动后界面如下,出现熟悉的Android界面

https://baijiahao.baidu.com/s?id=1695305523615222605&wfr=spider&for=pc