發表文章

目前顯示的是 4月, 2018的文章

Excel VBA @數量計算表

圖片
數量計算表中常在A欄打入計算式,B欄產生結果: 圖一、感謝鑒恩學長提供使用範例。 1.  A欄打計算式,B欄再打一次計算式前面補個"="。 2.  A欄打計算式,設定定義名稱指定到A欄,於參照欄位中使用內建函數Evaluate產生值。      B欄填寫"=AA" 即可產生數值。 圖二、AA定義名稱中的參照為內建函數Evaluate 3.  將第2點的方式再更改成較為精簡的自訂函數。 進入開發人員中→檢視程式碼→新增模組→打入以下程式碼。 Public Function Eval(ByVal s As String)     s = Replace(s, "{", "(")     s = Replace(s, "[", "(")     s = Replace(s, "]", ")")     s = Replace(s, "}", ")")     Eval = Application.Evaluate(s) End Function P.S:因為在使用Evaluate內建函數的時候,他無法偵測小括號"("")" 以外的符號,Ex:{[]},故將程式碼多做一次代換的工作,日後就可以在計算式中比較好辨識優先順序。 日後使用時,一樣在A欄打計算式,B欄打入"=Eval(指定到A欄的儲存格)"即可產生數值囉~ 圖三、自訂函數 圖四、操作範例(A1為計算式,C1為值) 有關更進一步的討論連結在此  Excel VBA @數量計算表-2

AutoCAD VBA 橫斷面繪製自動化(疏濬用)

圖片
新版本請參考  VBA @ 一般渠道疏濬圖 前言: 因應筆者所在的灌溉給水區域為濁水系統,外加上坡度比較緩和,常需要有疏濬的工作要執行,每次在計算疏濬土方量的時候,畫一下縱橫斷面也是不可避免的。現地的狀況由該擔當區的人員最能理解土方分布情況,但又受限於繪製CAD斷面也是一門學問,因而引發我寫了一個side project將原本在CAD中設定斷面高程的部分以Excel表的形式代替,爾後再由CAD中的dvb檔去連結設定檔,達到參數化製圖的目的。 使用方法: 1. 設定該灌溉系統的起訖點、渠道形式(U型溝、內面工)及尺寸(Unit:M)。 圖一、排序必須由上到下遞增,不能有空白。 2. 點選 " 斷面填寫 " 後依照指示填寫。(會先偵測前次的最後樁號,填入樁號需比它 後面 ) 圖二、Buttom位於工作表1:橫斷面繪製資料。 P.S:如左側有剩餘資料,請先點選 " 刪除資料 "。 3. 填寫時若是板橋、箱涵等較難疏濬的地方,請在樁號填寫上or下,代表上斷面or下斷面 4. 填寫左右環境參數後、各點高程以及是否為結束點(END?),如已知下一個的樁號可填寫 下      一個間距 ,點按OK後不會再進行詢問。 圖三、Excel VBA中的userform。 P.S2:結束點代表為板橋或箱涵的上斷面,在土石方計算表中會多安插一列空白行隔開。 5.如果要更改已經填寫的最後一道樁號資料,可以透過 " 上一動 " 將其引入。 6.填寫完後點按 " 結束 " 再進行檢查各項資料後即可儲存備用。 7.進入AutoCAD中,將dvb檔引入後並且將該Excel開啟中,即可繪製一連續的斷面。 8.回到Excel中,點擊 " 土石報表 " ,即可得到老大們需要的土石方報表。 ' 'This project is to solve the complex and boring things in dredge event 'Made by Hank Lin 2018/3/19 @ MelinStation '

Excel VBA @竣工文件

圖片
範例影片: 前言: 工程報竣工後會有一堆文件需要輸出給上級機關簽核,尤其是當下載下來後都是 分散 的話,每個輸出都要點擊一次列印、調整列印份數,可是會相當麻煩,因此寫了一個VBA來簡化這些問題。 圖一、上級機關需要的文件的一部分。  使用方法: 必須先將所有要輸出的文件與"竣工派驗VBA.xlsm" 放在同一個資料夾 。 檢查該文件的工作表名稱及相對應的文件編號(需要在程式碼   Arrange 中更改)。 若有資料先清除資料。 詳細檢查各個文件的內容正確性。 列印。 圖二、Arrange中的一部分程式碼( arr與arr2數量需要相同 ,否則會出錯) 結論: 因應每家機關需要的文件不同,需要透過更改程式碼量身打造需要的文件名稱與編號,故提供的程式碼僅供參考使用。 程式碼: Sub main() Call GetFile Call MoveData Call Arrange Call sortvba Sheets(1).Select End Sub Sub GetFile() Path = ThisWorkbook.Path '相對路徑 ChDir Path f = Dir("") Do Until f = "" If Not f Like "竣工派驗VBA*" Then Workbooks.Open f, False End If f = Dir() Loop End Sub Sub MoveData() For Each Workbook In Workbooks wbn = Workbook.Name Workbooks(wbn).Activate If Not wbn Like "竣工派驗VBA*" Then i = 0 For Each Sheet In Sheets wpt = InStr(1, wbn, ".")

Excel VBA@ 監造日報表、查驗表

圖片
新版本請參考:  監造日報表Ver2.0 前言: 工程線流程:測量→設計→發包→監造→驗收→移交。 其中,監造有相當多的文件及注意事項,比如施作數量、成本監控、品質管制(查驗表)、重大期程(工程督導、說明會、變更(修正)設計、展延工期...等等),在文件上的處理可說是相當的繁瑣。 光是品質管制的查驗表就分為: 開挖(放樣)工程查驗表 土方工程施工查驗表 鋼筋施工組立查驗表 模版施工組立查驗表 混凝土施工作業查驗表 模版及混凝土施工完成作業查驗表 職業安全衛生暨環境保護措施查驗表 在查驗表的表頭須註明工程名稱、工程位置、施作內容、施作日期...等, 已經在監造日報表中出現過 的部分,配合監造日報表的數量、單價、預定進度可以輕易的找到累積數量、累積成本、累積進度,去判斷是否有落後。 主要構想: 以往都是以複製的方式去拉出一連串的日報,只要連結錯誤,就是整批的更改連結,相當麻煩。因此寫了一個Side Project 用ExcelVBA去執行監造日報表的填寫過程,將工作表分為: 監造日報表     (輸出的樣版長相) 日報基本資料 (單價、數量、是否變更、基本工程綱要、試體、渠道數等重要資料) 數量及計算     (進度、天氣狀況、施作單價、施作數量) 施工日誌         (工程位置、施作內容、查驗項目、重大期程) 查驗總表         (與查驗有關的項目及查驗後內容都在此) 經基本資料填寫後,取得預算書(將PCCES的資料丟入,會依照主體工程、雜項工程、職業安全衛生、環境保護措施...等主要項目匯入到日報基本資料的工作表中,日後 僅需要進行填寫數量 ,就會將所有相關資料導入至數量及計算、施工日誌、查驗總表...等工作表,減少重複的資料一直出現,再透過主介面的"監造日報表"、"查驗表",選擇列印模式即可批次列印。 圖一、程式主要介面 圖二、填寫數量介面 圖三、監造日報表樣版產出 圖四、某一查驗表產出