一種運用vba代碼自動編制工程資料目錄的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種利用VBA在Excel中自動編制工程資料各類目錄的方法,特別是像灌漿資料元評定資料、斷面圖資料、三檢資料等一些臺賬明確,但數(shù)據(jù)量極大,而格式要求又特別嚴格的卷內(nèi)目錄資料編制或錄入。
【背景技術(shù)】
[0002]竣工資料的目錄編制是一項簡單但是重復(fù)性很大的工作,當前工程技術(shù)人員對竣工資料卷內(nèi)目錄編制基本為對照臺賬手動輸入的方法,或者復(fù)制粘貼對應(yīng)數(shù)據(jù),對于大型工程,傳統(tǒng)方法存在以下缺點:
(O復(fù)制粘貼后格式變化較大,后期調(diào)動格式繁瑣麻煩;
(2)工作量巨大,技術(shù)人員資料處理壓力大,重復(fù)繁雜工作多;
(3)成千上萬次人工處理相同操作容易對疲勞、反感,甚至出錯頻繁。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問題是:提供一種自動編制工程資料各類目錄的方法,利用VBA在Excel中實現(xiàn)臺帳數(shù)據(jù)的交換處理,自動生成固定格式的標準目錄,精準快捷地完成卷內(nèi)目錄編制工作。
[0004]本發(fā)明的技術(shù)方案是:利用Excel中的VBA模塊采集原有臺賬中的數(shù)據(jù),經(jīng)過引用、分析、判斷和處理后自動生成規(guī)定格式的工資料卷內(nèi)目錄,具體來說,本發(fā)明包括以下步驟:
①制作符合目錄標準格式的工作表,復(fù)制粘貼原有臺帳到被引用位置:在Excel中制作符合目錄標準格式的工作表,并將現(xiàn)有臺帳復(fù)制粘貼到被引用位置;
②編寫VBA模塊,處理目錄工作表與原有臺帳間的數(shù)據(jù)引用關(guān)系:在VisualBasic編輯器中新建“生成目錄”宏模塊,編寫VBA代碼,配合包括InputBox函數(shù)(數(shù)據(jù)輸入功能)、VLookup函數(shù)(數(shù)據(jù)查詢讀取功能)與被引用位置中的現(xiàn)有臺賬進行數(shù)據(jù)引用、分析、判斷和處理;
③在目錄工作表中添加功能控件,匹配相應(yīng)的操作模塊:在工作表中添加加載步驟②中“生成目錄”宏模塊的按鈕控件。
[0005]上述步驟②和③中包括利用MsgBox函數(shù)實現(xiàn)的操作提示模塊。
[0006]上述步驟③中的操作模塊包括目錄清空模塊,打印預(yù)覽模塊和一鍵打印模塊。
[0007]與現(xiàn)有技術(shù)比較,本發(fā)明能夠避免大量的復(fù)制粘貼操作和格式調(diào)整操作,由于利用了 VBA語言,實現(xiàn)了大量數(shù)據(jù)的自動采集處理,大大減少了操作人員的工作量,避免了因操作人員疲勞造成的數(shù)據(jù)錄入錯誤,遺漏等情況發(fā)生。
【附圖說明】
[0008]圖1為本發(fā)明的流程示意圖。
【具體實施方式】
[0009]下面以灌漿資料為例,詳細描述本發(fā)明的實施方法:
1、打開Excel文件,建立一個固定格式的目錄標準文件工作表(sheetl),將原有臺賬(包含所有原始數(shù)據(jù))復(fù)制粘貼至另一張工作表(sheet2).
2、打開Excel中VisualBasic編輯器,新建一個宏模塊,寫入代碼(本模塊以灌楽資料為例,其余參數(shù)可根據(jù)臺賬名稱改變一次相應(yīng)的名稱即可使用,也可根據(jù)臺賬的列位置不同改變range中字母,行位置不同改變range單元格中數(shù)字即可通用),代碼如下:
SubmuluO‘定義宏名稱為目錄(mulu)
Dim dyh, zdmc,sxy, kh As String, n,i,j,ym, yys, eys As Integer, zh AsVariant, rq As Date‘定義各變量
dyh = InputBox (〃請輸入單元號〃,〃單元孔號〃,"9S01G")
‘手動輸入單元孔號n = InputBox (〃本單元總孔數(shù)〃,〃總孔數(shù)〃,〃72〃)
‘手動本單元總孔數(shù)yys = InputBox ("請輸入本單元每個一序孔資料頁數(shù)",〃每個一序孔資料頁數(shù)〃,〃6〃)
‘手動輸入一序孔頁碼,默認值為6eys = InputBox ("請輸入本單元每個二序孔資料頁數(shù)",〃每個一序孔資料頁數(shù)〃,〃4〃)
‘手動輸入二序頁碼,默認值為4If Mid (dyh, I, I) = 9 Thenzdmc = 〃9#施工支洞"
Else: zdmc = 〃14# 施工支洞〃
End If
If zdmc = 〃9# 施工支洞〃 And Mid (dyh, 2, I) = 〃S" Then sxy = 〃上游”
ElseIf zmmc = "9# 施工支洞"And Mid (dyh, 2, I) = "X" Thensxy = ”下游”
ElseIf Mid (dyh, 3, I) = 〃S" Then sxy = 〃上游"
Else: sxy = 〃下游〃
End If
‘此段為判斷各孔工程部位,因本工程存在2個支洞,采用判斷語句,若zdmc首字母為9則為9#施工支洞,否則else則為14#施工支洞For i = I To η / 2 Step I (此部為一序孔目錄)
‘建立循環(huán)函數(shù) If i < 5 Then kh = dyh & O & 2 * i Else: kh = dyh & 2 * i End If
zh = Application.WorksheetFunction.VLookup (kh,Sheets ("Sheet2") · Range (" al: z2000"),2,F(xiàn)alse)
rq = Application.WorksheetFunction.VLookup (kh,Sheets ("Sheet2") · Range (" al: z2000"),3,F(xiàn)alse)
‘采用vlookup函數(shù)根據(jù)臺賬確定粧號和日期 ym = I + (i - I)木 yys
Range ("e" & i + 2) = "*** 隧洞 ” & zdmc & sxy & Int (zh / 1000)& 〃+" & zh Mod 1000 & ". 〃 & zh * 100 Mod 100 & 〃 固結(jié)灌漿 〃 & kh & 〃 基礎(chǔ)資料〃
‘整合此單元格中各項內(nèi)容成型 Range ("f" & i + 2) = rq Range ("G" & i + 2) = ym
Range ("f,, & i + 2). NumberFormat = "yyyymmdd"
‘將日期和頁碼賦值入excel設(shè)定日期格式
Next i
For j = I To η / 2 Step I (此部為2序孔賦值)
If j < 5 Thenkh = dyh & 0& 2*j_lElse: kh = dyh & 2 * j - IEnd If
zh = Application. WorksheetFunction. VLookup(〃kh〃,Sheets (〃Sheet2〃)·Range Γ al: z2000"),2,I)
rq = Application. WorksheetFunction. VLookup(〃kh〃,Sheets (〃Sheet2〃)·Range Γ al: z2000"),3,I)
ym = I + (j - I) ^ eys + yys ^ n / 2NumberFormat = "yyyy-m-d"
Range ("e" & n/ 2 + j + 2)= "*林隧洞 ” & zdmc & sxy & Int (zh /1000) & 〃+" & zh Mod 1000 & "· 〃 & zh * 100 Mod 100 & 〃 固結(jié)灌漿 〃 & kh & 〃 基礎(chǔ)資料"
Range ("f" & η / 2 + j + 2) = rqRange ("G" & n / 2 + j + 2) = ym
Range Cf^ & n / 2 + j + 2). NumberFormat = "yyyymmdd"
重復(fù)操作為2序孔賦值
Next jEnd Sub
3、在Excel中開發(fā)工具中插入command控件,命名為“制作目錄”并加載步驟2中編寫的宏模塊。
[0010]4、單擊“制作目錄”的command控件,彈出msgbox提示“輸入單元號”,輸入單元號。
[0011]5、彈出msgbox提示“輸入單元總孔數(shù)”,輸入此單元總孔數(shù)。
[0012]6、彈出msgbox提示“一序孔頁數(shù)”,輸入一序孔頁數(shù),彈出msgbox提示“二序孔頁數(shù)”,輸入二序孔頁數(shù)。
[0013]7、自動生成了本單元目錄文件,生成第二單元重復(fù)輸入單元號、總孔數(shù)、頁數(shù)即可,數(shù)秒可以完成一個單元竣工目錄編制工作。
[0014]8、增加清空模塊清空上一個單元的數(shù)據(jù),具體代碼如下:
Sub Macrol O
Range("C3:H74").SelectSelect1n.ClearContentsEnd Sub
通過此代碼,可以一鍵刪除剛生成數(shù)據(jù),減少選取再刪除數(shù)據(jù)的時間。
[0015]9、設(shè)置一鍵打印功能模塊,代碼如下:
Sub Macro3O
ExecuteExce14Macro "PRINT (1,,,1,,,,,,,,2,,, TRUE,, FALSE)"
End Sub
本發(fā)明根據(jù)相應(yīng)模塊對應(yīng)的控件按鈕可以自動根據(jù)臺賬生成每個單元的卷內(nèi)目錄,空表直接變成了可以打印的卷內(nèi)目錄,大大簡化技術(shù)人員工作量,而且數(shù)據(jù)根據(jù)原來電子版臺賬生成,精準率高,適應(yīng)于工作量極大的竣工資料目錄整編。
【主權(quán)項】
1.一種運用VBA代碼自動編制工程資料目錄的方法,其特征在于包括以下步驟: ①制作符合目錄標準格式的工作表,復(fù)制粘貼原有臺帳到被引用位置; ②編寫VBA模塊,處理目錄工作表與原有臺帳間的數(shù)據(jù)引用關(guān)系; ③在目錄工作表中添加功能控件,匹配相應(yīng)的操作模塊。2.根據(jù)權(quán)利要求1所述的一種運用VBA代碼自動編制工程資料目錄的方法,其特征在于:所述步驟②和③中包括操作提示模塊。3.根據(jù)權(quán)利要求1所述的一種運用VBA代碼自動編制工程資料目錄的方法,其特征在于:所述步驟②中通過InputBox函數(shù)和VLookup函數(shù)實現(xiàn)工作表單元格的數(shù)據(jù)實時交互。4.根據(jù)權(quán)利要求1所述的一種運用VBA代碼自動編制工程資料目錄的方法,其特征在于:所述步驟③中的操作模塊包括目錄清空模塊,打印預(yù)覽模塊和一鍵打印模塊。
【專利摘要】本發(fā)明公開了一種利用VBA在Excel中自動編制竣工資料卷內(nèi)目錄的方法,采用新建宏模塊,運用VBA程序InputBox等數(shù)據(jù)輸入功能、VLookup函數(shù)等數(shù)據(jù)讀取功能與Excel原有臺賬的數(shù)據(jù)交流,運用Visual?Basic語言引用、分析、判斷和處理數(shù)據(jù),實現(xiàn)一鍵按固定格式生成目錄,一鍵打印等功能。本發(fā)明和現(xiàn)有技術(shù)相比,可以規(guī)避對照臺賬一次次手動輸入的繁瑣操作,避免了成千上萬次的輸入重復(fù)數(shù)據(jù)可能導(dǎo)致的疲勞,反感,進而造成出錯的概率。本發(fā)明可以數(shù)量級地提升工作效率,且后期無需對資料格式進行任何調(diào)整,并可對相應(yīng)可執(zhí)行格式進行預(yù)設(shè)。
【IPC分類】G06F17/22
【公開號】CN105183705
【申請?zhí)枴緾N201510667203
【發(fā)明人】夏圣斌
【申請人】中鐵五局(集團)有限公司, 中鐵五局集團第五工程有限責(zé)任公司
【公開日】2015年12月23日
【申請日】2015年10月16日