02套单价破解 (模板)讲座
m248131854
m248131854 Lv.4
2009年05月07日 19:23:43
来自于水利造价
只看楼主

谁有以前的那个套单价1.4版的,有的同志发给我一个,感激不尽, 想研究一下 接 http://bbs.co188.com/content/viewthread.php?tid=1173674&extra=%3D1&ofid=918&page=5 91楼.......讲. 这是模板的结构。里面有几张表隐藏了,你可以按以下步骤来显示他,菜单->工具->宏->


谁有以前的那个套单价1.4版的,有的同志发给我一个,感激不尽, 想研究一下








http://bbs.co188.com/content/viewthread.php?tid=1173674&extra=%3D1&ofid=918&page=5
91楼.......讲.
模板文件的的表、其中有.jpg
这是模板的结构。里面有几张表隐藏了,你可以按以下步骤来显示他,菜单->工具->宏->
宏辑器打开.jpg
下面显示的是所有的表
显示隐chang的表.jpg
上图中的最后一行visible 便是控制表隐藏与否的关键,你可以将其改为
改表显示.jpg
在模板文件中,里面的数据大家先不要动.现在主要是了解里面的结构,02套单价程序,就是把这个文件的内容复制到新建工程文件的初始内容,其中有一个建模便是我们要修改的内容
(单价分析表)其实我们投标时这个模板与我们要求的主要内容是差不多的,大家只要修改一下表头就可以了,
在各省的定额与这个模板差不多,有的只是多了一项两项的,
以山东水利定额为例,山东定额内容里多了一项 其他费用(%),其计算式为,(人+材+机)*其它费用
我们可以改成这样,
投标模板.jpg
同样安模也可以改
模板文件里有一个 费率表大家可以看一下,了解一下整个文件的结构
模板的修改大家只要动一下表头内各项的位置就行了,“%%”里面的文字暂时就不要动了,这样就可以自定义模板了。[当然要改动的话,在你以后了解了整个程序也是可以的,]
当然在主程序的变动,我们以后再讲.
主程序。。。在02单价的安装目录下有一个文件,SL0208、大家把这个文件改为SL0208.xls
运行他,这时需要密码,(密码我不说了,大家自已去找,)
输入密码,,,,
编制一个工程单价
在新建的单价文件里打开 菜单->工具->宏->vB编辑器
打开VBAProject(SL0208),这时要密码,输入密码
在EXCEL对象里有一个表,叫定额,我们这几天主要是来了解它,了解数据的格式和结构
4.jpg
5.jpg
修改表定额使之可见
当然大家也可去掉整个VBA工程的保护,
切换到预算套单价工作薄,这时可以看到工作薄里 定额工作表已经显示出来了,
大家可以看到
4.jpg
在02单价V1.3中,网友提出的几个问题,是都可以在这儿解决的.
第一列数据是"定额电算编号",这个数据是我们定额编号,大家怎细看数据的前面多了一位数,这个数据是
用来曲别定额章节的,以它来确定不同的费率,比如:安装工程\建筑工程等。
第二列数据是 "电算编号" ,这个数据是与定额中的电算编号一样,每一种材料\人工\机械都有一个唯一的编号,(它的作用一是,在计算时可以提供判断依据,L表示人\M表示材料\P表示机械, 当然大家也可以加一个其它的字母来代表我们新加的项目。别外一个作用是大家如果是用手工输入定额库的话,可以用,if +VLOOKUP函数写一个东东来简化输入的过程,这样行先建好电算编号,以后就可以只输编号不再用打汉字了。
不过不提倡这种输入定额的方法。另外有一个方法,是利用单位的软件导出电子表格的单价分析表进行加工,虽然不全,但是只要把多选一的部分再加进去。总比一条一条输入速度要快[讲座结束时,再送几个函数])
第三列数据是 “数量”它是与后面第五列数据是对应的,这个就没什么好说的了。
第四列数据 暂且不说
第五列数据是 “项目名称”它是定额里每一项的项目名称,每一项均与每三列相对应。按顺序输入
后面的几列大家一看就知道了。不讲了
下面大家选择条目工作表,第六列至第十列是隐藏的,把这几列用鼠标拉开,可能经看到
5.jpg
位置列 共有2个数据:大家看下,1、定额:是指在本程序中工作表的名称,[当大家也可以改成省定额,什么的,但是现在先不要改,]。 2、这第2个数据是本项定额在定额工作表中开始的行号。。
3、项数,是指自第n行开始本条定额一共多少项。
到这里你已经看出定额大致结构了,
其它几列,就不讲了,大家自已看吧,
在02单价中,所指出的错误,就是在这里改的,现在同志们可以试试修改成几条本省的定额,然后再运行一下,是不是有点意思了。
:)
大家不要指望我能讲多细,因为我也是从5.1 才开始学习的,希望大家多交流,
5月9日............................................
改后的模板.jpg
大家看下,表头的位置是可以随意改动的,我们可以多做几个模板,分别命名为AHTB.CFB、AHTB1.CFB、AHTB2.CFB等。最简单的方法是在做单价之前把所要用的模板名字改为AHTB.CFB
就可以了。
模块1.jpg
在这里有一个 CreateResultFile程序
大家看以下一段代码
'释放造价模板文件至临时文件夹,文件名为ahsl.c
Public Sub FreeCostFilePat(rFilePath As String)
Dim temPath As String, str As String, i As Integer
Dim wor As Workbook, flm As String, inputdata As String
Dim myfile As SectionedFile
Dim strTemp As String ' 临时文件夹

'安装后模板文件放置在工作薄同目录下
Select Case gFileModel
Case 1 '投标模板
temPath = GetCurrentPath & "ahtb.cfb" ‘ 根据我们的选择,定义模板文件的名字[另外我们可以在这里再加入一个询问窗口 和 IF THNE 语句再增加几个模板
Case 2 '清单模板
temPath = GetCurrentPath & "ahqd.cfb" '清单模板文件的路径 &清单文件名
End Select
'检查模板文件是否存在
If VBA.Dir(temPath) = "" Then
MsgBox "模板文件不存在或被移动,建议重新安装本软件。", vbOKOnly + vbExclamation, TipCaptionStr
End
End If
If IsFileAlreadyOpen(temPath) Then
MsgBox "创建单价文件错误。模板文件正在使用。", vbOKOnly + vbInformation, TipCaptionStr
End
End If
'获得系统临时文件夹
strTemp = String(100, Chr$(0))
GetTempPath 100, strTemp
strTemp = Left$(strTemp, InStr(strTemp, Chr$(0)) - 1)
If VBA.Right(strTemp, 1) <> "\" Then strTemp = strTemp & "\"
'检测释放的模板文件是否存在和打开
If VBA.Dir(strTemp & "ahsl.c") <> "" Then
If IsFileAlreadyOpen(strTemp & "ahsl.c") Then
MsgBox "创建单价文件错误。模板文件正在使用。", vbOKOnly + vbInformation, TipCaptionStr
End
Else
Kill strTemp & "ahsl.c"
End If
End If
'释放模板文件到临时文件夹
ReDim myfile.Files(1)
ReDim myfile.Files(1).Bytes(1 To 10)

Open temPath For Binary As #1
flm = strTemp & "ahsl.txt"
Open flm For Binary As #2
'头文件字节数10
Get #1, 1, myfile.Files(1).Bytes
Put #2, 1, myfile.Files(1).Bytes
Close #2
Open flm For Input As #2
Line Input #2, inputdata
If Trim(inputdata) <> "AHSLCostMB" Then ‘AHSLCostMB这几个字是模板文件前10个字符,判断模板文件头10个字节,是否为"AHSLCostMB" ,
MsgBox "模板文件被损坏,建议重新安装本软件。", vbOKOnly + vbExclamation, TipCaptionStr
End
End If
Close #2
Kill flm '删除用于检测的头文件
ReDim myfile.Files(1).Bytes(1 To LOF(1) - 10)
flm = strTemp & "ahsl.c" ' AHSL.C为临时文件 strTemp为临时文件路径.
Open flm For Binary As #2 '打开临时文件 2#通道
'紧接文件头后读出,起始字节为10+1。。。。。。。。。。。。。。。这后面便是我们前面提取到的EXCEL模板文件。。。。。。。。。。。。。
Get #1, 11, myfile.Files(1).Bytes '读模板文件,自11字节开始,也就是去掉AHSLCostMB后的文件
Put #2, 1, myfile.Files(1).Bytes '将读入的数据写入ahsl.c文件.
Close #2 '关闭文件
Close 1# '关闭文件
rFilePath = flm
End Sub

哈哈,你能看明白这段代码吗?。。。。。

大家有什么问题在下面回复吧,

上面讲的应该是本程序的核心内容了,大家接合主程序认真的看才行,要是有什么问题提出来[不要给我发短消息,直接在下面回帖提出来我们一起来解决],短消息概不回复
下面在第十三\十四\十五楼继续讲[今天刚从黄山回来,明天再讲,,大家可以先提问题,我根据问题讲]
13\14\15我先占下 呵呵

[ 本帖最后由 m248131854 于 2010-9-27 20:54 编辑 ]
yxz57507
2009年05月07日 19:42:12
2楼
楼主辛苦了,支持下,期待继续
回复
yxz57507
2009年05月07日 19:50:12
3楼
在线等待,期待大侠继续讲解……
回复
yxz57507
2009年05月07日 20:41:59
4楼
很经典啊,等待楼主继续讲解。
回复
yxz57507
2009年05月08日 00:03:03
5楼
楼上的朋友,什么叫“在论坛本软件发布帖中闹腾的也最欢”?“本软件”是不是没有购买的人就不能发表一下个人的看法?别人是不是就不能学习或改进一下吗?

[ 本帖最后由 yxz57507 于 2009-5-18 15:33 编辑 ]
回复
m248131854
2009年05月08日 17:29:02
6楼
非常感谢谢饭米粒同志的理解,
发这个贴的本意,不是去破解你的东东,只是想把这个软件的基本思路给大家说一下,看水利行业的同行们能不能都能把全国各省的水利定额都做出来,并且供献出来,大家一起方便工作。

大家有什么问题在后面提出,大家一块解决

[ 本帖最后由 m248131854 于 2009-5-8 17:52 编辑 ]
回复
yangxiaojuan520
2009年05月09日 07:52:35
7楼
谢谢你的分享。很不错的东西,值得学习和借鉴,真的有我很多需要的东西,再次感谢了!:)
回复
voyage777
2009年05月12日 15:13:30
8楼
非常感谢楼主的无私,非常有用的资料。
非常感谢楼主的无私,非常有用的资料。
回复
m248131854
2009年05月16日 12:28:11
9楼
回复 yxz57507
"分别命名为AHTB.CFB、AHTB1.CFB、AHTB2.CFB"
上面这些说的是,在投标时,在招标文件中,要求的单价分析表的格式不同,主要区别是表头部分不一样,这样我们先做好几个常用表头的分析表,这样在投标时我们就可以选用适合招标文件的,分析表样式.
回复
wangyl8099
2009年05月16日 19:51:16
10楼
楼主你好!看了你破解“02定额套单价v1.3”的文章,对老兄很是佩服,希望能继续看到对“主程序”的破解方法,谢谢大侠!!!
回复
m248131854
2009年05月18日 14:44:36
11楼
:L 先回复16楼所提出的第二个问题:2、修改单价分析表的表头或修改里面的局部内容,"分别命名为AHTB.CFB、AHTB1.CFB、AHTB2.CFB",在代码中如何执行这个工作表?
这是我前面所提出的一个解决问题的简单办法:例如当你想要用模板AHTB1.CFB做单价时,将AHTB1.CFB改名为AHTB.CFB就可以了,其它模板也可以改为AHTB.CFB。
——-----------------------------------------------------------------------------------------------------
回复16楼所提出的第6个问题
6、按照大侠的思路,修改好的单价分析表如何复制到原程序中去才可以执行。
这个问题的解决方法:
一、是在WinHex中打开修改后的excel模板文件,在前面插入“AHSLCostMB”这几个字符。
二、是在程序中修改代码。
Open flm For Input As #2
Line Input #2, inputdata
If Trim(inputdata) <> "AHSLCostMB" Then ‘AHSLCostMB这几个字是模板文件前10个字符,判断模板文件头10个字节,是否为"AHSLCostMB" ,
MsgBox "模板文件被损坏,建议重新安装本软件。", vbOKOnly + vbExclamation, TipCaptionStr
End
End If
Close #2
1、 将 [If Trim(inputdata) <> "AHSLCostMB" Then ‘AHSLCostMB这几个字是模板文件前10个字符,判断模板文件头10个字节,是否为"AHSLCostMB" ,
MsgBox "模板文件被损坏,建议重新安装本软件。", vbOKOnly + vbExclamation, TipCaptionStr
]前面加单引号 “'”,使本程序不执行,不再判断模板文件头是否为"AHSLCostMB" 。

2、 将Get #1, 11, myfile.Files(1).Bytes 改为 Get #1, 1, myfile.Files(1).Bytes
3、将修改好的模板文件名直接改为 AHTB.cfb
这样,你是否看懂了。
——————————————————————————————————————————————————————————————————————————————————————————————————————————
第三个问题
3、最后列出的这段代码,特别是红字标出的部分,不明白什么意思,请详细介绍下

Get #1, 11, myfile.Files(1).Bytes
这条语句的意思是 Get #1读取通道1#文件的内容,11这个数字是从第11字节开始读取
若改为1则是从第1个字节开始读取。模板文件的前十个字节是“AHSLCostMB"
Put #2, 1, myfile.Files(1).Bytes
这条语句是将刚才读取的内容写入的临时文件"ahsl.c"
—————————————————————————————————————————————————————————————————————————————————————————————————————————
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆另外向大家伙推荐一本书: [中文版excel2000宝典] 网上有电字版的大家找下看看吧☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
________________________________________________________________________________________________

第五个问题

5、原程序中,自定义模板的错误如何修改。
这一条现阶段,你可以不用理它,
具体程序我没看, 我想它只在修改后的模板文件前面加了10个字节的数据即“AHSLCostMB"不含引号
并他改名为AHTB.cfb

——————————————————————————————————————————————————————————————————————————————————————————————————————————
其它的问题明天讲吧

[ 本帖最后由 m248131854 于 2009-5-19 10:19 编辑 ]
回复

相关推荐

APP内打开