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