领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

合同管理“开挂”!DeepSeek写VBA,Excel一打开就弹窗到期预警

nixiaole 2025-06-23 21:10:49 知识剖析 3 ℃

还在靠人肉翻合同台账,心惊胆战怕错过续签?或者手动设置一堆条件格式,结果淹没在花花绿绿的表格里?别慌!今天分享一个超实用大招:用DeepSeek写VBA代码,让你的Excel合同表“活”起来! 最大亮点:每次打开文件,自动弹窗告诉你哪些合同快到期了! 再也不用担心遗忘,管理效率瞬间拉满!

核心效果预览:

  1. 自动高亮:即将过期(7天内)的合同整行标黄,已过期的整行标红,一目了然。
  2. 智能弹窗:打开Excel文件时,自动弹出对话框,清晰列出所有7天内到期的合同编号及剩余天数,想忽略都难!
  3. 一键部署:代码由DeepSeek生成,复制粘贴即可,小白也能轻松上手。

手把手实现“开挂”合同管理:

第一步:打好地基 - 数据规范是王道!
想让DeepSeek写的代码跑得稳,你的合同数据表必须“清爽”!记住一个黄金原则:
一维表!

  • 一行一合同:每条合同信息独占一行。
  • 关键字段不能少:至少包含 合同编号、合同开始日期、合同结束/到期日期。其他信息如客户、金额等按需添加。
  • 拒绝合并单元格:合并单元格是VBA代码的“天敌”,务必拆分开!
  • 日期格式要标准:确保开始日期和结束日期是Excel能识别的标准日期格式(如 2025-06-06 或 2025/6/6)。

想象你的表格应该是这样:

划重点: 结构清晰、数据规范是成功的第一步!DeepSeek需要精准定位日期列。

第二步:召唤“码力” - 让DeepSeek写代码!
这才是最神奇的部分!你不需要懂VBA,交给DeepSeek就行!

一.清晰描述需求:打开DeepSeek聊天框,把你的要求说清楚、说详细。越具体,生成的代码越精准! 可以这样告诉它:

请生成完整的VBA代码,并添加必要的注释说明关键步骤。”

二.告知表格结构务必!务必! 告诉DeepSeek你的表格关键信息在哪一列!比如:

1.“合同结束日期” 在 D列

2.“合同编号” 在 B列

3.数据行从 第2行 开始

4.需要高亮/显示的整行范围是 A列到G列 (根据你的实际列数调整)

5.工作表名称是 “合同管理” (替换成你的表名)

关键点: 列号(字母)、工作表名、日期字段名、显示范围这些信息必须准确无误地提供给DeepSeek!这是代码正确运行的核心。

第三步:代码现世 - 粘贴即用
DeepSeek 很快会生成类似下面的VBA代码(
注意:以下代码基于上述假设,你的实际列标、表名、范围需按你告知DeepSeek的修改!):

Private Sub Workbook_Open()
    ' 说明:此宏在工作簿打开时自动运行,检查合同到期情况并提醒
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("合同管理") ' 替换为你的工作表名
    Dim lastRow As Long
    Dim reminderMsg As String
    Dim i As Long

    ' 找到D列(合同结束日期)最后有数据的行
    lastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row
    reminderMsg = "以下合同将在7天内到期:" & vbNewLine ' 初始化提醒消息

    ' 关闭屏幕更新,提高速度且避免闪烁
    Application.ScreenUpdating = False

    ' 先清除A2到G最后一行的背景色 (假设数据范围是A:G)
    ws.Range("A2:G" & lastRow).Interior.Pattern = xlNone

    ' 从第2行开始循环到最后一行 (假设第1行是标题)
    For i = 2 To lastRow
        ' 确保D列单元格是日期
        If IsDate(ws.Cells(i, 4).Value) Then ' 4 代表 D列
            Dim endDate As Date
            Dim daysLeft As Long

            endDate = ws.Cells(i, 4).Value ' 获取结束日期
            daysLeft = DateDiff("d", Date, endDate) ' 计算剩余天数(今天到结束日期的天数差)

            ' 处理已过期合同 (结束日期 < 今天)
            If endDate < Date Then
                ws.Range("A" & i & ":G" & i).Interior.Color = RGB(255, 0, 0) ' 整行标红
            ' 处理7天内到期合同 (0 < 剩余天数 <= 7)
            ElseIf daysLeft <= 7 And daysLeft >= 0 Then ' 包含今天到期 (daysLeft=0)
                ws.Range("A" & i & ":G" & i).Interior.Color = RGB(255, 255, 0) ' 整行标黄
                ' 将信息添加到提醒消息:合同编号(B列=列2) + 剩余天数
                reminderMsg = reminderMsg & "合同编号:" & ws.Cells(i, 2).Value & _
                              "(剩余" & daysLeft & "天)" & vbNewLine
            End If
        End If
    Next i

    ' 恢复屏幕更新
    Application.ScreenUpdating = True

    ' 如果reminderMsg长度超过初始文本长度(说明有需要提醒的合同),则弹出提醒框
    If Len(reminderMsg) > Len("以下合同将在7天内到期:" & vbNewLine) Then
        MsgBox reminderMsg, vbInformation, "合同到期提醒"
    End If
End Sub

第四步:注入“灵魂” - 部署代码
让代码真正生效只需几步:

  1. 打开VBA编辑器:在你的Excel文件中,按 Alt + F11 (这是万能快捷键!)。
  2. 定位代码存放位置
  3. 在左侧的 工程资源管理器 (如果没看到,按 Ctrl+R) 里,找到你的工作簿名称 (通常是 VBAProject (你的文件名.xlsx) )。
  4. 双击下面的 ThisWorkbook 对象。这代表整个工作簿。
  5. 粘贴代码:右侧会出现一个空白代码窗口。把DeepSeek生成的完整代码(从 Private Sub Workbook_Open() 到 End Sub)复制粘贴进去。
  6. 保存为宏文件
  7. 回到Excel界面,点击 文件 > 另存为。
  8. 在 保存类型 下拉菜单中,务必选择 Excel 启用宏的工作簿 (*.xlsm)。这是关键!普通 .xlsx 文件存不了宏。
  9. 保存文件。
  10. 启用宏(首次打开)
  11. 当你下次打开这个 .xlsm 文件时,Excel 顶部可能会有一条安全警告(黄色条),提示“已禁用宏”。
  12. 点击 启用内容。只有这样,你的自动提醒代码才能运行。

大功告成! 以后每次打开这个合同管理文件:

  1. 过期合同自动变红行。
  2. 7天内到期合同自动变黄行。
  3. 一个清晰的弹窗立刻跳出,告诉你哪些合同快到期了,还剩几天!

总结:DeepSeek + Excel VBA = 合同管理“免忘金牌”
这套方法的核心优势在于
“开箱即提醒” 的自动化体验。DeepSeek 完美解决了写VBA的门槛问题,你只需清晰描述需求和数据结构。花几分钟部署一次,就能彻底告别合同逾期的烦恼,让管理更省心、更专业!

赶紧把这个方法分享给负责合同的小伙伴吧!从此,你就是办公室的“效率担当”了!

Tags:

最近发表
标签列表