2026-08 · 工程台账
Excel VBA 工程项目台账系统:从零搭建思路
台账页、资料页、示意图页三层结构怎么分工;示意图测量点如何动态适配 12/10/8/6/4;图片批量插入与文件名自然排序的坑。
阅读全文 →
台账页、资料页、示意图页三层结构怎么分工;示意图测量点如何动态适配 12/10/8/6/4;图片批量插入与文件名自然排序的坑。
沿线路中心线连续弧长里程体系;JD8 前短链 0.049 m 的来龙去脉;反算桩号时如何正确归算断链后里程。
做工程项目台账,核心是把外业记录和内业资料用一套数据串起来。我的思路是分三页:
台账页:人工录入基础数据(桩号、部位、工程量、日期等),是唯一的"数据源"。资料页:从台账页自动生成,按规范格式排版,直接打印或导出。示意图页:根据台账里的测量点自动画示意图。现场测量点数量会变化,示意图不能写死。默认 12 个点,按实际数据**动态缩减为 10 / 8 / 6 / 4**,靠 VBA 判断有效行数后控制绘图区域。
Dir 校验文件存在,避免断链。1.jpg、2.jpg、10.jpg)必须用自然排序,否则会被排成 1、10、2…。字典序是常见错误。文件统一用 GBK/GB2312 编码,VBA 全程中文注释,避免出现中文乱码,也方便同事接手维护。
' 自然排序比较函数(按数值段拆分)
Function 自然比较(a As String, b As String) As Integer
' 将 "12_放样.jpg" 拆成 数字段+文本段 逐段比较
End Function
整套系统跑顺之后,台账一填、资料页和示意图页自动出,省下的全是重复劳动。
高铁线路坐标计算,关键是里程体系的定义。我这套系统采用沿线路中心线连续弧长里程,全线总长 20699.951 m。
给定任意里程,先判断落在哪一段(直线 / 缓和曲线 / 圆曲线),再用对应的参数方程求坐标与切线方位角。带缓和曲线时:
x = l − l⁵/(40R²Ls²),y = ±l³/(6RLs)给定坐标反求最近里程,本质是迭代逼近——先粗定位到邻近里程,再在切向做一维搜索收敛。
本线在 JD8 前切线存在一处断链:
断链前里程 11350.000 断链后里程 11350.049 差值 +0.049 m (短链)
断链意味着"同一个物理点有两套桩号"。正反算时必须先判断输入里程位于哪个断链区间,用断链后里程做坐标解算,否则会差出 0.049 m——对高铁来说就是不容许的偏差。
换算关系很简单:断链后 = 断链前 + (断链后桩号 − 断链前桩号),但一定要确认待换算里程在该断链点之后。
这套正反算逻辑我后来也做成了网页版小工具(见主页「🛠️ 工具」),手机上也能随手算。