發表文章

目前顯示的是 2022的文章

監造日報表系列-進度湊不到100%的解法

監造日報表在填寫數量的時候有兩種方法 1.單一工項 2.組合工項 經使用者反應,常因為數量計算表或數量統計表上的四捨五入問題,最後可能會有實際進度無法變成100%的狀況產生。 在組合工項的處理上,藉由設計圖上的標示尺寸來設置單元數量(U型溝每進行米共需多少鋼筋、模板、混凝土or紐澤西護欄每塊共需多少鋼筋、模板、混凝土、油漆),除了便於監造人員便於計算工程用量,也能透過單元的總計檢討先進行初步檢核總量是否有異常,計算所得到的單元數量才一併列於數量統計表上,最後所有數量列出後的加總值才進行四捨五入,自然而然會有些許的誤差導致無法於實際進度表上看見100%的數值。 接下來會將這個模組放置於新版本中,有興趣請加入我的官方賴,會在更新時一併提醒訂閱用戶哦~ -------------------------------------------------------------------------- 解決方法 將所有的項目都列出後,數量都已確認放上去,再將契約數量與實際數量的誤差攤回去原本的工程用量做尾數補整即可。 程式碼如下 '------20221122 處理剩餘零星數量-------- Sub getOverNumberFromLastDay() reportNum = InputBox("請輸入理應為100%的報表編號") allowence = InputBox("請輸入校正回歸允許值", , 1) prompt = "***校正回歸完成項目***" & vbNewLine With Sheets("Report") .Range("K2") = reportNum Call ReportRun For r = 8 To getReportLastRow conNum = .Cells(r, "F") sumNum = .Cells(r, "I") If conNum <> sumNum Then itemName = .Cells(r,

Excel操作網頁資料進行大量批次查詢

圖片
前言: 手邊有將近上萬筆的鄉鎮及地段地號需要填寫入地政司網站查詢是否有合併或分割情勢,並回傳更新後的地段地號,一筆筆看著打進去網站裡面的相對應欄位是一件很折磨人的事情。憑藉著先前研究過Selenium的印象,想必Excel也能有這項Library可以引用才是。 經研究後,發現透過應用SeleniumBasic+chrome driver就能達到自動操作網頁的效果了,省時間又準確,特此紀錄與網友分享。 環境設定: 安裝SeleniumBasic( 下載請點我 ) 確認Excel的開發人員頁面可否引用Selenium Type Library 確認自身電腦的chrome版本 安裝相對應版本的chrome driver( 下載請點我 ) 如果需要的話可以先安裝SeleniumIDE以便之後可以用錄製的方式確認。( 下載請點我 ) 操作流程:     先 透過SeleniumIDE錄製要執行的動作後輸出為C#檔,畫面如下      觀察上述錄製出的程式碼,裡面最常出現的查找物件有 FindElement(By.CssSelector("xxxx")) FindElement(By.Name("xxxx")) FindElement(By.XPath("xxxx")) FindElement(By.LinkText("xxxx"))     觀察上述錄製出的程式碼,裡面最常出現的物件行為有 Click() SendKeys("xxx")     由此可知在Selenium的世界裡面,     第一步會是先找物件,第二步就是要針對物件要做什麼事情。 在Excel的語法中,若要進行查找物件的方法僅需要更改為 FindElementByCss FindElementByName FindElementByXpath FindElementByLinkText 範例程式碼如下:

Excel VBA @施工日誌

圖片
 讀者的心聲我都聽見了,監造單位既然有監造日報怎能沒有施工單位的施工日誌? 操作影片: 施工日誌VBA-操作範例解說 施工日誌主要記載內容為: 施工工項(契約內容) 材料管理 人員管理 機具管理 其他重要事項 介面設計有「+」與「-」,可以讓使用者方便放大縮小,其中所有的單一資料都會有一個報表編號作為主要的關鍵字,以資料庫的概念進行增加、查詢、刪除...等基本資料建立方式。 圖一、填寫基本介面 由於大多數的工程案件都有固定的重要施工項目,因此特別設置範本的概念供使用者進行建立,比如說範本名稱為道路工程,其內容由瀝青混凝土、碎石級配、開挖機、大工、小工所組合而成,未來載入範本於施工工項或材料管理時僅需要填寫數量即可。 做出的成果有四種型態的長表及四種型態的日報,供使用者依照喜好進行取用。 圖二、產生日報介面 第一聯的部分: 1.表單工項不為0,產生日報後的當日工項、材料、人員、機具,會把不為0的都列出來。 2.工項累計數量不為0,產生日報後的以前日期所曾填列過的項目都會列出來。 第二聯的部分: 1.工項累計數量不為0,產生日報後的以前日期所曾填列過的項目都會列出來。 2.所有契約項目都會顯示。 最理想的狀態是第一聯(表單工項數量不為0)加上第二聯(工項累計數量不為0),這樣不僅日報可以顯示得比較精簡而且如果要對詳細的數量時也可以有第二聯作為輔助 圖三、產生長表介面 長表部分就是工項、材料、人工、機具的區段累計,方便業主進行核對成本而已。 圖四、施工日誌第一聯 圖五、施工日誌第二聯 如有需求,表單連結如下: https://docs.google.com/forms/d/e/1FAIpQLScV1sl-_Hz-U0t3rHir3qRxA08-XHHLhxpk72DKhFonXJRr2A/viewform?usp=sf_link QA:20230627已經更新至簡易使用手冊。

監造日報表系列-遇到變更設計怎麼辦?

圖片
監造日報表系列中的隱藏模組-變更設計 變更設計最麻煩的的一點就是要處理變更加減帳的問題,主體+雜項的變更前後比例還會影響到編製預算書時所用到的比例項目更正,因此既然監造日報表裡面的工作表("Budget")已經有紀錄著PCCES匯入的預算書資料,那麼透過這個工作表的再開發應該可以更快的得到「變更設計總表」、「變更設計明細表」,因此而撰寫這個專案,每次算加減帳都會被主辦退,這次應該不會被退了,電腦自己算給你! 圖一、變更設計狀況(1=新增項目新增單價,2=數量變更,3=單價變更) 圖二、變更設計總表 圖三、變更設計明細表 相關範例程式碼如下: 'also need "clsBudgetItems" ClassModule Private shtBudget As Worksheet Private shtCBudget As Worksheet Private obj As New clsBudgetItems Private collAddress As New Collection Private ItemCountArray As Variant Public IsFixItemCount As Boolean Private mode As String Private ratio As Double Private Sub Class_Initialize() Set shtBudget = Sheets("Budget") Set shtCBudget = Sheets("CBudget") '取得預算書的資料 'get budget data from sheets("Budget") obj.getData obj.sumEachSepPrice a = obj.sumSpecificPrice(1, 2) b = obj.sumSpecificCPrice(1, 2) ratio = b / a 'get the ratio to check other item End Sub Sub getPrintPage() '&P=當前頁數 '&N=總頁數 '2020.05.05 upd

Excel VBA 串接綠界科技(第三方金流服務)

 會員授權機制 講到會員一定會想到的就是控制權限及收款,因為是軟體所以不會有物流服務。 金流服務串接通常使用API來進行串接,本次案例採用綠界科技PHP開發套件進行部署以及利用GAS URL API去做WebHook。 先備條件: Google帳戶 綠界收款帳號 要綁定的EXCEL檔(xls或xlsm) 基礎知識: Google Apps Script PHP VBA 流程說明: 點擊程式後先取得該電腦的識別碼。 進行後端資料庫連線,如為首次使用者會自動註冊識別碼。 進行後端資料庫連線,確認資料庫中有該電腦識別碼並檢查版本號。 版本號為(T)為測試版,放行條件為使用剩餘日數大於0天、使用次數小於100次。 版本號為(P)為正式版,放行條件為使用剩餘日數大於0天。 若使用剩餘日數為0天,顯示續約表單。 填寫完續約表單後進入綠界付款頁面,付款完成後重新打開程式。 版本號更改為(P)版本,使用剩餘日數加上360天。 回復正常運行使用。 後續使用: 上述這些程式碼只要被註解掉基本上就沒有救了,相信看得懂VBA的人都知道哪裡可以把它註解,甚至有些人會把它包在另一個module中,用一行去做引用,只要多個'你的程式就被破解了,現在要破解的方法多如牛毛,我後來找到一個方法可以將它包裝成exe檔案,這讓整個Excel的權限控制變得相當可行,有興趣可加我官方賴討論~