网站首页 > 知识剖析 正文
还在靠人肉翻合同台账,心惊胆战怕错过续签?或者手动设置一堆条件格式,结果淹没在花花绿绿的表格里?别慌!今天分享一个超实用大招:用DeepSeek写VBA代码,让你的Excel合同表“活”起来! 最大亮点:每次打开文件,自动弹窗告诉你哪些合同快到期了! 再也不用担心遗忘,管理效率瞬间拉满!
核心效果预览:
- 自动高亮:即将过期(7天内)的合同整行标黄,已过期的整行标红,一目了然。
- 智能弹窗:打开Excel文件时,自动弹出对话框,清晰列出所有7天内到期的合同编号及剩余天数,想忽略都难!
- 一键部署:代码由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
第四步:注入“灵魂” - 部署代码
让代码真正生效只需几步:
- 打开VBA编辑器:在你的Excel文件中,按 Alt + F11 (这是万能快捷键!)。
- 定位代码存放位置:
- 在左侧的 工程资源管理器 (如果没看到,按 Ctrl+R) 里,找到你的工作簿名称 (通常是 VBAProject (你的文件名.xlsx) )。
- 双击下面的 ThisWorkbook 对象。这代表整个工作簿。
- 粘贴代码:右侧会出现一个空白代码窗口。把DeepSeek生成的完整代码(从 Private Sub Workbook_Open() 到 End Sub)复制粘贴进去。
- 保存为宏文件:
- 回到Excel界面,点击 文件 > 另存为。
- 在 保存类型 下拉菜单中,务必选择 Excel 启用宏的工作簿 (*.xlsm)。这是关键!普通 .xlsx 文件存不了宏。
- 保存文件。
- 启用宏(首次打开):
- 当你下次打开这个 .xlsm 文件时,Excel 顶部可能会有一条安全警告(黄色条),提示“已禁用宏”。
- 点击 启用内容。只有这样,你的自动提醒代码才能运行。
大功告成! 以后每次打开这个合同管理文件:
- 过期合同自动变红行。
- 7天内到期合同自动变黄行。
- 一个清晰的弹窗立刻跳出,告诉你哪些合同快到期了,还剩几天!
总结:DeepSeek + Excel VBA = 合同管理“免忘金牌”
这套方法的核心优势在于 “开箱即提醒” 的自动化体验。DeepSeek 完美解决了写VBA的门槛问题,你只需清晰描述需求和数据结构。花几分钟部署一次,就能彻底告别合同逾期的烦恼,让管理更省心、更专业!
赶紧把这个方法分享给负责合同的小伙伴吧!从此,你就是办公室的“效率担当”了!
猜你喜欢
- 2025-06-23 MySQL 8.0 参考手册— 内置函数和运算符参考
- 2025-06-23 SqlServer根据身份证号码查询出生日期和年龄
- 2025-06-23 VBA数组处理数据的财会实战案例(vba数组计算函数)
- 2025-06-23 mysql——日期操作(mysql日期+1)
- 2025-06-23 odps sql中常用的时间处理方法(pmod sql)
- 2025-06-23 MySQL常用函数(MySQL常用函数案例)
- 2025-06-23 大数据量惯用优化方法(大数据量解决方案)
- 2025-06-23 一文掌握 DuckDB 时间序列分析:窗口函数实战详解
- 2025-06-23 MySQL 时间计算组合:助力精准工龄及补偿金计算
- 2025-06-23 SELECT list is not in GROUP BY clause_mysql执行的时候报错了
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)