「把網路訂單表單或郵件收到的訂單,負責人每天手動重新輸入到公司內部的銷售管理系統」「月底把出勤或申請的 Excel 統一轉錄到基幹系統要花上整整兩天」。我們經常收到這類諮詢。共通點在於,轉錄的目的地是使用了 10 年、20 年的老舊業務系統(WinForms 或 VB6 時代的畫面、專用用戶端),既沒有 API 也沒有 CSV 匯入功能。
若能改造系統當然是根本解決之道,但廠商已經不存在、沒有原始碼、改造成本不划算等理由,導致持續手動輸入的案例並不少見。填補這個空隙的實際工具,就是透過 Power Automate for desktop (PAD)進行的 UI 自動化。它會原封不動地重現人所做的鍵盤輸入與滑鼠操作,因此不需要動到轉錄目的地的系統就能自動化。如果是 Windows 11,甚至不用額外安裝就能輕鬆嘗試。
不過,UI 自動化也是一種「一開始要跑起來很容易,但要穩定持續運作很難」的工具。本文聚焦於轉錄業務,從一開始就該不該選用 UI 自動化的判斷、免費可用的範圍與授權界線、穩定運作的設計,一路整理到失敗時的復原方式。Power Automate 整體的分工方式與例外處理的一般論,已經寫在「用 Power Automate 自動化業務 ── 雲端流程與桌面流程的分工,以及錯誤處理設計」中,本文則是針對轉錄業務的各論。
1. 先講結論
- UI 自動化是最後的手段。要先確認轉錄目的地有沒有 CSV 匯入、資料庫直接寫入、API、檔案串接等介面。只要有一個存在,用那個會更確實、更穩定。
- PAD內建於 Windows 11,Windows 10 也能免費安裝。透過錄製器與 400 種以上的動作,讀取 Excel 並輸入畫面的轉錄流程可以用無程式碼的方式組出來。12
- 只要是建立流程並在本機執行(有人執行),就不需要額外付費。無論是職場・學校帳戶還是 Microsoft 帳戶都一樣。另一方面,從雲端流程自動啟動・排程執行・共用流程,則需要 Power Automate Premium 授權。34
- 像夜間批次處理這類無人執行(unattended),還需要註冊電腦以及 Power Automate Process 授權。就技術層面而言,也有「所有使用者都必須已登出」等特有的前提條件。56
- 穩定運作的關鍵在於選取器的建立方式、元素等待、以每筆為單位的例外處理這三點。並排固定 Wait 組成的流程,總有一天一定會壞掉。789
- 為了在失敗時能知道「輸入到哪裡了」,一開始就要導入讓輸入來源的 Excel 具備狀態欄與登錄編號欄、每一筆都回寫的設計。這樣一來,即使重新執行也不會發生重複輸入。
- 由於畫面變動導致損壞的宿命無法消除,件數多、無法停止、目標應用程式更新頻繁的業務屬於資料串接開發或基幹系統改造的範疇。這條界線會在第 8 章整理。
2. 轉錄作業的問題出在哪裡
從 Excel 或紙本轉錄到基幹系統,其問題不只是「單純作業占用時間」而已。從諮詢中觀察到的共通問題有以下三點。
- 時間集中在結算日。若是每日的接單輸入還能分散,但月底結算的請款處理或出勤彙整,轉錄工作會集中在結算日之後的一到兩天。這段期間,負責人幾乎無法做其他工作。應該有不少公司是靠加班或支援人力來吸收這個負擔。
- 輸入錯誤會流向下游。位數輸入錯誤、行錯位、商品代碼弄錯。轉錄錯誤往往要等到變成請款單或庫存數字之後才會被發現,因此追查原因與更正的工夫,遠比輸入錯誤本身要多上好幾倍。加入雙重檢查可以減少錯誤,但相對地時間也會增加。
- 變成只有那個人才能做的工作。「這個畫面要照這個順序輸入不然會出錯」「只有這個客戶要用特殊的輸入方式」之類的訣竅,會累積在負責人的腦中,一旦此人請假,業務就會停擺。
自動化的價值不只是縮短時間。流程只會依照既定方式輸入,所以不會有轉錄錯誤,而且步驟會以流程的形式留下形跡,也能緩解對特定人員的依賴。能夠削平結算日的高峰,這一點也很重要。
另外,若轉錄的來源是紙本或傳真,在這之前還需要一道「讀取」的工序。關於傳真訂購單的 OCR,已在同時發表的「用 AI Builder 讀取 FAX 送達的訂購單 ── 減少手動輸入抄錄的務實設計與極限」中處理,因此本文以轉錄來源「已經是 Excel 等資料」為前提進行說明。
3. 自動化手段的選項 ── UI 自動化是最後的手段
首先要強調的是,畫面操作的自動化(UI 自動化)是選項中的最後一個。UI 自動化依賴畫面配置、解析度、回應速度等「顯示上的因素」,因此無論做得多細緻,都不可避免地比直接傳遞資料的方式更容易損壞。要先確認轉錄目的地的基幹系統有沒有以下這些介面。
| 串接手段 | 要確認的事項 | 穩定性 | 備註 |
|---|---|---|---|
| CSV・固定長度檔案的匯入功能 | 選單深處有沒有「外部資料匯入」「批次登錄」。向廠商的手冊、支援單位確認 | 高 | 即使是老舊業務系統,出乎意料地經常具備這個功能。匯入檔案的產生可以用 PAD 或 PowerShell 自動化 |
| 資料庫直接寫入 | 是否知道資料庫的種類與連線資訊。維護合約上是否允許直接寫入 | 高 | 有可能繞過業務邏輯(編號、一致性檢查)的風險,因此讀取可以直接進行,寫入則要謹慎。需要驗證 |
| API・串接中介軟體 | 若是較新型號的套裝軟體,是否有串接選項 | 高 | 需要與選配費用權衡 |
| 檔案串接(監控資料夾) | 是否有將放在指定資料夾的檔案自動匯入的機制 | 高 | 在報表系統或倉儲系統中常見這種形式 |
| UI 自動化(PAD) | 以上皆無的情況 | 中 | 唯一不需要動到畫面的方法。本文的主題 |
另一個選項,是往「消除」轉錄的方向,也就是改造或重建基幹系統本身。在 VB6 應用程式加入匯入功能,還是 Web 化並從接單入口重新打造,這類判斷已在「VB6 應用程式能用到什麼時候 ── 執行環境的支援現況與務實的 .NET 遷移做法」與「Windows 應用程式該不該 Web 化 ── 判斷表與「拆分」這個現實解方」中整理過。改造需要開發費用,因此先用 PAD 自動化爭取時間,等業務量增加、看到極限之後再投資改造,這樣的順序也是務實的做法。
4. Power Automate for desktop 的基礎
導入門檻很低
PAD 內建於 Windows 11。在開始功能表搜尋「Power Automate」就能找到應用程式,首次啟動時會自動下載並開始使用。2 Windows 10 與 Windows Server 2016 也擁有使用權,可以從下載中心免費安裝。2 安裝方式有 Microsoft Store 版與 MSI 安裝程式版,若考量到後續的雲端串接(電腦註冊),就要選擇能一併安裝電腦執行階段應用程式的 MSI 版。10
用錄製器打好骨架
PAD 有一個能把操作記錄下來並轉換成動作列的錄製器。它會以與 UI 元素的關聯來記錄滑鼠與鍵盤操作,因此對於打造轉錄流程的骨架來說已相當實用。這裡對轉錄業務特別有效的一點,是記錄方式可以選擇 UIA (UI Automation)與 MSAA (Microsoft Active Accessibility)這兩種。UIA 是針對 WPF、WinForms 等較新應用程式的推薦方式,MSAA 則是針對 VB6 或傳統 Win32 這類 UIA 無法取得元素的老舊應用程式的方式。當老舊基幹系統的畫面無法順利抓取元素時,把錄製器的記錄模式切換成 MSAA,有時就能抓到。11
不過,錄製器終究只用於打骨架。條件分支與迴圈無法錄製,因此前提是錄製之後要在設計工具中編輯完成。11
UI 元素與選取器
PAD 會把畫面上的按鈕、文字方塊記憶為「UI 元素」。其實體是以視窗階層與屬性的組合來辨識元素的選取器。轉錄流程的壽命,幾乎就取決於這個選取器的建立方式。若選取器中包含連號的索引或動態變化的 ID,即使看起來是同一個畫面,也可能某天突然抓不到。
選取器用 > 表示階層(親子關係),各個元素以元素[屬性="值"]的形式撰寫。舉例來說,記事本的視窗就是:desktop > window[Name="Notes.txt - Notepad"][Process="Notepad"]這樣的形式。7 錄製器自動產生的選取器,會把這個「值」用畫面上顯示過的原始字串固定下來,因此會發生以下這類損壞。
| 容易損壞的選取器 | 會發生什麼事 | 修正方式 |
|---|---|---|
像window[Name="受單輸入 - 2026/07/18"]這樣,用完全一致指定包含日期或件數的標題 |
日期改變的隔天,即使是同一個畫面也不會再一致 | 把屬性Name的運算子從「Equal to」改成Contains,值只留「受單輸入」 |
像pane > pane > pane > edit這樣,把容器(窗格)的階層固定得很深 |
畫面上只要多加一個框架,階層就會偏移,抓不到 | 停用中間的階層,只留下穩定的父視窗與目標元素 |
| 依賴兄弟元素的排列順序(例如第 3 個 Edit) | 輸入項目只要增減一個,就會輸入到隔壁欄位 | 不用順序,改用Id(AutomationId)等元素固有的屬性來辨識。若抓不到,也可以試著用 MSAA 重新取得 |
像edit[Name="客戶: 山田商事"]這樣,用完全一致指定來自資料的字串 |
客戶一變動就會失敗 | 把會變動的部分換成 PAD 的變數(%CustomerName%),或使用Regular expression match |
選取器編輯畫面可用的運算子有 Equal to / Not equal to / Contains / Starts with / Ends with / Regular expression match 這 6 種(正規表示式的方言是 .NET)。不過,視覺化編輯器只有在「Equal to」時才能使用變數,因此要記住「用變數替換一部分」和「用 Contains 做部分一致」是互斥的。7
在此之上,重要的操作要登錄備用選取器。一個 UI 元素可以擁有多個選取器,會依序由上往下嘗試,失敗就會回退到下一個選取器。損壞時可以用 Repair selector 功能產生修復候選。這個想法本身在整體指南中也提過,但由於在轉錄流程中直接關係到流程的壽命,本文就展示到具體範例的程度。7
有一點是轉錄業務特有的注意事項。UI 自動化的動作,是以目標視窗位於最前面為前提運作,如果不在最前面,就會自動把它帶到最前面。12 也就是說,執行中的電腦基本上「整台被流程獨占」。負責人在同一台電腦上一邊做其他工作一邊執行流程的做法,容易造成誤點擊或誤輸入,應該避免。
轉錄的基本結構: 讀 Excel、寫畫面
轉錄流程的基本形式是「用 Excel 動作讀取 → 用迴圈逐筆用 UI 操作寫入」。用Launch Excel開啟檔案,用Read from Excel worksheet讀取範圍後就會變成資料表變數。若加上「將第一行作為欄名使用」選項,後續在迴圈中就能用CurrentItem['客戶代碼']這樣以欄名參照值,對欄位順序的變動也比較有韌性。13 回寫結果則使用Write to Excel worksheet。若要在行末追加,可以用Get first free row on column尋找空白行。13
5. 免費可用的範圍與授權界線
導入 PAD 時一定會被問到的問題就是「哪裡是免費,從哪裡開始要付費」。這條界線落在「建立、手動執行」與「自動執行、由組織管理」之間。
| 能做的事 | Microsoft 帳戶 | 職場・學校帳戶(不需額外授權) | Power Automate Premium |
|---|---|---|---|
| 建立流程・錄製器・400 種以上的動作・例外處理 | ○ | ○ | ○ |
| 流程的儲存位置 | OneDrive (個人) | 預設環境的 Dataverse | 多個環境的 Dataverse |
| 從 PAD 主控台手動執行(有人執行) | ○ | ○ | ○ |
| 從雲端流程啟動(排程・事件觸發) | × | × | ○ |
| 流程共用・集中管理執行紀錄 | × | × | ○ |
建立與手動執行,無論哪種帳戶都不需要額外付費。34 使用 Microsoft 帳戶時,流程會儲存到 OneDrive;使用職場・學校帳戶時,會儲存到預設環境的 Dataverse。若要在公司內使用,考量到日後的管理,基本上以職場帳戶開始比較好。4
超越這條界線的時機,是想讓流程「不需要人按按鈕也能運作」的時候。要讓桌面流程在固定時刻或事件時啟動,就需要建構成由雲端流程呼叫的形式,而這需要以下準備。14
- 註冊電腦: 把要執行的電腦註冊到 Power Automate 雲端。用 MSI 版所附的電腦執行階段應用程式登入即可完成註冊。另外,Windows 10/11 的 Home 版不支援這種直接連線。10
- 建立桌面流程連線: 建立讓雲端流程登入該電腦所需的連線(Windows 帳戶的憑證)。14
- 授權: 建立連線的使用者,必須擁有符合執行形式的授權。14 在有人登入的電腦上執行的有人執行(attended),需要 Power Automate Premium(包含 attended RPA 權利的使用者授權)。106
- 無人執行(unattended)還需要 Power Automate Process 授權,並指派給電腦。Process 授權不是配給使用者,而是配給電腦(或流程)的授權,每台電腦可以獲得一個無人執行名額(無人機器人)。要注意的是,指派 Process 授權的電腦,前提是必須已經由擁有 Premium 授權的使用者完成註冊。也就是說,光買 Process,沒有 Premium 使用者也無法完成組態。56
電腦註冊與桌面流程連線的步驟
這是導入時最容易卡關的地方,因此把操作順序與項目名稱列出來(項目名稱會併記英文版標籤)。
- 安裝電腦執行階段應用程式。用 MSI 安裝程式安裝 PAD 時,在安裝畫面的「安裝用於連線 Power Automate 雲端入口網站的電腦執行階段應用程式(Install the machine-runtime app to connect to the Power Automate cloud portal)」打勾。10
- 登入並註冊。從開始功能表啟動「Power Automate machine runtime」並登入,電腦就會自動註冊到當下選擇的環境中。若尚未註冊,系統會提示你選擇執行環境。註冊完成後,會顯示電腦名稱(Machine name)、說明(Machine description)、環境(Machine environment)。10
- 確認前提條件。進行註冊的使用者需要環境的「環境製作者(Environment Maker)」或「Desktop Flows Machine Owner」角色。直接連線的前提是 PAD 2.8.73.21119 以上版本,Windows 10/11 的 Home 版無法使用。10
- 確認註冊狀態。在 Power Automate 入口網站開啟「Monitor(監視)」>「Machines(電腦)」,就能看到已註冊電腦的清單、狀態、正在執行的流程數。10
- 建立桌面流程連線。在雲端流程端新增桌面流程的動作,從動作右上角的「…」選擇新增連線,在「連線(Connect)」欄選擇「直接連線至電腦(Directly to machine)」,輸入電腦名稱以及登入該電腦所需的 Windows 帳戶憑證後建立。10
- 指派無人機器人(僅無人執行需要)。在入口網站的電腦詳細頁面開啟「設定(Settings)」,用「無人機器人(Unattended bots)」的滑桿指派處理容量後儲存。這裡指派的數量,就是該電腦能同時執行的無人執行數量。15
總結來說,若是「負責人早上按下按鈕、親眼看著轉錄流程執行」這種運作方式,免費範圍就能完成。若是「半夜自動跑完」這種運作方式,就需要 Premium+Process(+已註冊的電腦)。就費用感的參考而言,截至 2026 年 7 月的日本公開價格,Power Automate Premium 為每使用者每月 2,248 日圓,Power Automate Process 為每 1 個機器人(=相當於 1 台電腦的無人執行名額)每月 22,488 日圓(皆為年繳、未稅)。16 無人化的最小組態是「Process 授權 1 個機器人 + Premium 使用者 1 人」,換算下來每月約 2 萬 5 千日圓、每年約 30 萬日圓會成為固定成本。這就變成「為了讓每晚 30 分鐘的轉錄無人化,付 30 萬日圓一年是否值得」的權衡問題。價格會有調整,做判斷之前請到Power Automate 的價格頁面確認最新金額。如果轉錄所需時間一天大約 30 分鐘,先從免費的有人執行開始,等件數增加之後再考慮無人化就足夠了。授權整體的思路(包含標準・進階連接器的界線)已在同時發表的「Power Automate 的授權與標準・進階連接器的界線」中詳細整理。
6. 讓流程穩定運作的設計
不要用固定 Wait,改為「等待元素」
老舊基幹系統的搜尋、登錄回應時間,會因負載而大幅波動。用「等待 3 秒」這種固定 Wait 調整出來的流程,在系統變慢的日子一定會壞掉。基本做法是用Wait for window content動作,做成「等到特定的 UI 元素或文字出現(消失)為止」的形式。8 取得視窗(Get window)也能設定逾時,可以選擇「在指定時間內找不到就讓其失敗」或「一直等到出現為止」。8 「等到出現相當於登錄完成的訊息之後,再進入下一行」這種等待方式,在轉錄流程中格外重要。若不等待就開始下一筆輸入,畫面就會在前一行的登錄尚未結束時切換,導致資料混雜。
例外處理以「每一筆」為單位組裝
轉錄流程的例外處理,定式做法不是把整個流程包起來,而是用 On Block Error 包住迴圈中的一筆資料。發生錯誤時,記錄該行的失敗內容,把畫面還原到初始狀態(例如關閉輸入畫面回到選單),再進入下一行。這樣一來,即使 100 筆中有 1 筆商品代碼輸入錯誤,其餘 99 筆的輸入也會完成,只有失敗的那 1 筆會留給人工處理。暫時性的錯誤(例如回應延遲)也可以並用動作層級的重試設定。9 錯誤處理的細部做法(用 Get last error 取得錯誤內容、善後處理的設計等),交給整體指南與同時發表的「Power Automate 的錯誤處理與重試設計」處理。
即使失敗也能知道「輸入到哪裡了」
UI 自動化沒有像 Web 系統那樣的交易(transaction)機制。當流程中途中斷時,如果不知道「已經登錄到基幹系統的哪一行」,就只能在重新執行時重複輸入,或是全部件數逐一目視核對,二選一。有兩種設計可以防止這種情況。
- 讓輸入來源的 Excel 具備狀態欄。準備「未處理」「處理中」「完成」「錯誤」的狀態欄,以及基幹系統編號後的登錄編號欄。開始輸入一筆之前先設為「處理中」,在畫面上確認登錄完成並讀取登錄編號之後,再回寫「完成」+登錄編號。流程的處理對象永遠只有「未處理」的行,因此無論重新執行幾次,都不會動到已輸入的行(重新執行安全)。
- 只有留在「處理中」的行需要人工確認。若流程中斷,那一定是在輸入過程中,因此可疑的只有「處理中」的行。重新執行之前只要確認那些行在基幹系統端的狀態就好,核對範圍會從 100 筆縮小到 1 筆。
這個狀態欄本身就會成為執行紀錄。「昨天的轉錄是不是全部完成了」,不用看流程的執行歷程,只要打開 Excel 就能知道。這種形式對現場來說也容易說明。
無人執行的環境陷阱
有人執行時能正常運作的流程,一無人化就跑不動的諮詢真的很多。原因大多出在環境的差異上。
- 工作階段的前提: 無人執行時,Power Automate 會在目標電腦上新建一個遠端桌面(RDP)工作階段,執行完成後登出。執行期間,目標電腦的畫面會維持鎖定狀態。前提是電腦必須所有使用者都已登出,在 Windows 10/11 上,只要還殘留任何人的工作階段(即使是鎖定狀態),執行就會失敗。若是 Windows Server,只要殘留與連線相同使用者的鎖定工作階段,就會發生錯誤。若有維護作業之後習慣用「鎖定」或「中斷連線」離座,夜間的流程就會停擺。務必登出是這裡的口訣。5
- 權限: 連線所使用的使用者,必須能在該電腦上建立 RDP 工作階段(通常是隸屬於 Remote Desktop Users 群組)。另外,無人執行不支援伴隨提升為系統管理員權限的操作。5
- 畫面解析度: RDP 工作階段的預設解析度,可能與建立流程時的畫面不同。解析度降低時,建立時看得到的 UI 元素可能被隱藏在畫面外,導致「找不到元素」而失敗,或是以座標系操作的動作會點到別的地方。5 對策是可以在流程的內容中把「無人執行時的畫面解析度」固定為與建立時相同的數值。17 DPI 縮放的差異也是同類失敗的原因,建立時與執行時都統一為 100% 比較保險。18
無人化檢查清單
無人執行的前提橫跨授權、註冊、環境、運作方式,只要少一項就無法運作。把第 5、6 章出現過的條件整理成一張表。準備踏入無人化之前,請由上而下逐項確認清楚。
| 分類 | 要確認的事項 | 若缺少會發生什麼事 |
|---|---|---|
| 授權 | 建立連線的使用者擁有 Power Automate Premium6 | 無法完成電腦註冊、建立連線 |
| 授權 | 已為目標電腦指派無人機器人(源自 Process 授權的處理容量)15 | 無人執行無法開始 |
| 註冊 | 已用 MSI 版的電腦執行階段應用程式完成電腦註冊10 | 無法從雲端流程呼叫 |
| 註冊 | 目標電腦不是 Windows 10/11 的 Home 版10 | 無法使用直接連線 |
| 工作階段 | 執行時刻所有使用者都已登出(不要以鎖定・中斷連線的狀態留下)5 | 執行會失敗 |
| 權限 | 連線所使用的使用者能建立 RDP 工作階段(Remote Desktop Users 群組)5 | 無法建立工作階段而失敗 |
| 權限 | 流程中不包含伴隨提升為系統管理員權限的操作5 | 不受支援而失敗 |
| 畫面 | 已把無人執行時的畫面解析度固定為與流程建立時相同的數值17 | 元素被隱藏在畫面外找不到 |
| 畫面 | 已將 DPI 縮放在建立時、執行時都統一為 100%18 | 元素辨識或座標操作出現偏差 |
| 運作方式 | 已向相關人員宣導維護作業之後要用「登出」而非「鎖定」的方式離座18 | 夜間流程會停擺 |
| 運作方式 | 能透過輸入來源 Excel 的狀態欄,讓人知道隔天早上已經進行到哪裡 | 失敗時不知道要重做的範圍 |
驗證完這些之後,再於雲端流程端設定排程啟動(例如平日每天早上 6 點執行)。包含工作日判斷與月底處理的排程設計,已在同時發表的「Power Automate 的定期執行流程與工作日設計」中處理。
7. 轉錄流程的實例設計
把到目前為止的零件組合起來,設計一個「訂單一覽 Excel → 基幹系統的受單輸入畫面 → 結果回寫到 Excel」這種典型的轉錄流程,會如下所示。
flowchart TD
Start([開始: 手動或由雲端流程啟動]) --> ReadX[Read from Excel worksheet<br/>讀取訂單一覽,第一行作為欄名]
ReadX --> Filter{狀態欄為「未處理」的行是否存在}
Filter -- 不存在 --> Report[彙整處理結果並記錄・通知] --> End([結束])
Filter -- 存在 --> Launch[啟動基幹系統並登入<br/>用元素等待確認選單畫面已顯示]
Launch --> Loop[逐筆迴圈處理未處理的行<br/>迴圈內用 On Block Error 包起來]
Loop --> Mark[將狀態欄更新為「處理中」]
Mark --> Entry[開啟受單輸入畫面並輸入項目<br/>每次畫面切換都用 Wait for window content]
Entry --> Confirm[按下登錄按鈕 → 等待完成訊息<br/>從畫面取得編號後的登錄編號]
Confirm --> WriteBack[將狀態欄設為「完成」並回寫登錄編號]
WriteBack --> Loop
Loop -. 1 筆發生錯誤 .-> Handler[將錯誤內容記錄到該行<br/>登錄前的失敗設為「錯誤」/登錄後的失敗維持「處理中」<br/>把畫面退回選單後進入下一行]
Handler --> Loop
Loop -- 全部處理完成 --> Close[將基幹系統登出並關閉] --> Report
把這張圖對應到 PAD 的動作列,就會是以下排列。在設計工具上依序堆疊這些動作,上面這張圖就能原封不動地動起來。
| # | 動作 | 設定重點 |
|---|---|---|
| 1 | Launch Excel | 指定訂單一覽的路徑後開啟,用變數接收 Excel 執行個體 |
| 2 | Read from Excel worksheet | 取得工作表中所有可用的值,並在進階設定中開啟「範圍的第一行包含欄名」。結果存為ExcelData |
| 3 | Set variable | 為RowIndex代入2(因為第一行是欄名,資料從第 2 行開始) |
| 4 | Run application | 啟動基幹系統(若是常駐運作,可用 Get window 抓取既有視窗) |
| 5 | Wait for window content | 等待登入後選單畫面上特有的元素出現 |
| 6 | For each | 以CurrentItem逐行迴圈處理ExcelData |
| 7 | If | 若CurrentItem['狀態']不是「未處理」,就用 Increase variable 把RowIndex加 1,再用 Next loop 跳過該行 |
| 8 | On block error | 把接下來的 9〜13 包成一筆的區塊,將錯誤時的移動目標設為 14 的標籤 |
| 9 | Write to Excel worksheet | 在RowIndex行的狀態欄寫入「處理中」 |
| 10 | Populate text field in window | 用欄名取出CurrentItem['客戶代碼']這樣的值,輸入到各個輸入欄。日期・數值先整理成字串再傳入 |
| 11 | Press button in window | 按下「登錄」按鈕 |
| 12 | Wait for window content | 等到相當於「登錄已完成」的元素出現(不要用固定 Wait) |
| 13 | Get details of the UI element in window → Write to Excel worksheet | 從畫面讀取編號後的登錄編號,把RowIndex行的狀態欄設為「完成」,並在登錄編號欄寫入該值 |
| 14 | (錯誤處理區塊) Get last error → Write to Excel worksheet | 取得錯誤內容並記錄到RowIndex行的錯誤欄,用 Close window 等把畫面退回選單 |
| 15 | Increase variable | 把RowIndex加 1 並回到迴圈開頭 |
| 16 | Close Excel | 用「儲存文件」儲存後關閉,並將基幹系統登出後關閉 |
之所以用另一個變數保存RowIndex,是因為 For each 不會回傳行號。若沒有讓跳過的行也一定加 1(步驟 7),回寫的目標就會逐行偏移。
補充幾個設計上的重點。
- 輸入值的驗證要在 UI 操作之前完成。商品代碼的位數、數值項目是否混入文字、必填項目是否缺漏。讀取 Excel 之後立刻在流程端驗證,有問題的行在碰觸基幹系統之前就先設為「錯誤」。比起用 UI 操作去處理基幹系統的錯誤對話框,先在前面擋下來要穩定得多。
- 只有按下登錄按鈕之前的失敗才可以設為「錯誤」。如果例外處理一律把狀態欄改寫成「錯誤」,那麼登錄按鈕操作成功之後(等待完成訊息或回寫過程中)才失敗的行也會被標成「錯誤」,導致負責人重新執行該行,在基幹系統中造成重複登錄的事故。登錄操作之後的失敗,要讓狀態欄維持在「處理中」,以「處理中」結束的行不當作重新執行的對象,而是由人核對基幹系統端是否已登錄,再改回「完成」或「未處理」。這個設計的要點不是消除曖昧,而是把曖昧的部分原封不動地交給人工確認。
- 要預想畫面上的錯誤對話框。即便如此,輸入時的錯誤(庫存不足、客戶信用額度錯誤等)還是會發生。可以預想到的對話框,用「是否包含視窗」的條件分支接住並記錄到該行的錯誤內容,未預想到的則交給 On Block Error。9
- 要掌握件數與時間的大致標準。UI 自動化每一筆花上數十秒也不罕見。若是 100 筆 1 小時,夜間無人執行綽綽有餘,但若每天有數千筆,那就是該重新檢視 UI 自動化這個手段本身的訊號(下一章)。
- 輸入來源的正規化要在前面就做好。字元編碼與日期格式的落差、全形半形混雜等 CSV・Excel 特有的陷阱,已在「CSV不是「純文字」而已 ── C# 業務應用程式的 CSV 實務(字元編碼・Excel 相容性・注入攻擊防範)」中整理。
8. PAD 該做到什麼程度
UI 自動化只要畫面改變,總有一天會壞掉。這不是靠設計就能解決的問題,而是這種方式的宿命。正因如此,才需要有一條「可以用 PAD 自動化的轉錄」與「應該走向開發・改造的轉錄」之間的界線。
| 情況 | 判斷 |
|---|---|
| 一天數十到數百筆,即使失敗也能靠隔天工作日重新執行趕上 | PAD 就足夠。先從有人執行開始 |
| 目標應用程式的畫面好幾年沒變(塩漬起來的老舊應用程式) | 適合 PAD。諷刺的是,「不變的畫面」與 UI 自動化很合拍 |
| 目標應用程式頻繁升級版本(例如 SaaS 的網頁畫面) | 要以持續維護選取器為前提來判斷。若每次更新都會壞,就不適合 UI 自動化 |
| 每天數千筆以上,執行時間壓迫到工作時間 | UI 自動化的處理速度會遇到瓶頸。屬於新增 CSV 匯入功能開發或資料串接開發(委外)的範疇 |
| 一旦停擺,當天的出貨・請款就會停擺的基幹業務 | 若不允許「壞掉就先改回手動輸入直到修好」,UI 自動化就不適合。應考慮基幹系統改造・系統間串接的開發 |
| 想在轉錄時順便進行複雜的業務判斷(庫存分配、價格決定) | 把業務邏輯埋進流程無法維護到底。業務邏輯應該放在系統端 |
判斷的感覺上,我們的標準是「即使這個流程壞掉一週不修,改回手動輸入業務還能不能運作」。如果能運作,用 PAD 自動化就有足夠的價值。如果不能運作,那個轉錄就已經不是「自動化」的需求,而是「系統串接」的需求,需要考慮新增匯入功能、資料庫串接,或是把接單本身電子化(EDI或FAX 接單的網路化)。
還有一點,PAD 的流程也容易變成「只有做的人才碰得動的資產」。流程的內容、連線、執行電腦要由誰接手,已在同時發表的「Power Automate 的人員依賴對策 ── 讓建立者離職後流程也不會停擺」中整理。
9. 總結
沒有 API 也沒有 CSV 匯入功能的基幹系統轉錄作業,可以用 PAD 的 UI 自動化「不動系統本身」就自動化。若是 Windows 11,可以直接內建開始使用;只是建立流程並在本機執行的話,也不需要額外費用。光是讓負責人從每天 1 小時的轉錄中解放出來、不用再追查與更正轉錄錯誤,導入的工夫就已經足夠回收。
不過,順序與設計不能弄錯,這一點很重要。在 UI 自動化之前,要先找找看有沒有 CSV 匯入・資料庫・API・檔案串接的介面。從免費的有人執行開始,無人化則要掌握 Premium+Process 授權以及電腦必須已登出這些前提。用選取器、元素等待、以每一筆為單位的例外處理來讓流程穩定,並透過狀態欄的回寫,隨時保留「輸入到哪裡了」的資訊。而當件數、重要程度、畫面變動頻率超出 UI 自動化的守備範圍時,不要勉強硬撐,改為切換到基幹系統改造或資料串接開發。
本公司從 PAD 轉錄自動化的設計檢視,到後續新增匯入功能、系統間串接的委外開發,乃至老舊應用程式的遷移,都可以連貫地提供諮詢。即使只是「不知道我們公司的基幹系統能不能做到」這個階段,也歡迎輕鬆諮詢。
相關文章
- 用 Power Automate 自動化業務 ── 雲端流程與桌面流程的分工,以及錯誤處理設計
- VB6 應用程式能用到什麼時候 ── 執行環境的支援現況與務實的 .NET 遷移做法
- Windows 應用程式該不該 Web 化 ── 判斷表與「拆分」這個現實解方
- Power Automate 的錯誤處理與重試設計 ── 防止「原本運作正常的流程不知不覺停了」
- CSV不是「純文字」而已 ── C# 業務應用程式的 CSV 實務(字元編碼・Excel 相容性・注入攻擊防範)
相關諮詢領域
合同會社小村軟體處理從 Power Automate for desktop 轉錄自動化的設計・穩定化諮詢,到 UI 自動化無法涵蓋的基幹系統資料串接開發・老舊應用程式改造。
參考連結
-
Microsoft Learn, Get started with Power Automate in Windows 11. 關於 Windows 11 預先安裝的 Power Automate 應用程式,即使沒有程式開發經驗,也能透過 400 種以上的動作與錄製器建立流程。 ↩
-
Microsoft Learn, Power Automate licensing FAQ. 關於 Windows 11 使用者可以在預設環境中不需額外付費使用有人 RPA 的桌面流程(不可共用或在其他環境中建立)、從 Windows 搜尋列搜尋 Power Automate 就會在首次啟動時自動下載、Windows 10・Windows Server 2016 也擁有使用權可從下載中心取得。 ↩ ↩2 ↩3
-
Microsoft Learn, Get started with a work or school account. 關於以職場・學校帳戶使用 Power Automate for desktop 不需額外付費、預設環境需要 Dataverse 資料庫、要解鎖自動執行或流程共用等 RPA 功能需要升級為進階版。 ↩ ↩2
-
Microsoft Learn, Prerequisites and limitations. 關於依登入帳戶種類(Microsoft 帳戶/職場・學校帳戶/組織進階帳戶)的功能比較,錄製器・動作・例外處理在所有帳戶都能使用,與雲端流程的連線(啟動・排程)、共用、集中管理・報表僅限進階帳戶,儲存位置為 OneDrive 或 Dataverse。 ↩ ↩2 ↩3
-
Microsoft Learn, Run unattended desktop flows. 關於無人執行需要 Power Automate Process 方案、Power Automate 會建立 RDP 工作階段並在執行後登出、執行期間畫面會維持鎖定、需要所有使用者都已登出且 Windows 10/11 上若有殘留工作階段(包含鎖定中)會失敗、連線使用者需要建立 RDP 工作階段的權限(Remote Desktop Users 群組)、不支援伴隨系統管理員權限提升的執行、RDP 工作階段的預設解析度可能與建立時不同而導致找不到元素的失敗。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
-
Microsoft Learn, Types of Power Automate licenses. 關於有人 RPA 權利(電腦註冊・有人執行的觸發等)包含在 Premium 使用者授權中,無人 RPA 需要指派給電腦的 Process 授權(每台電腦一個無人機器人),Process 授權指派給電腦的前提是已由 Premium 使用者完成電腦註冊。 ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Build a custom selector. 關於選取器用
>表示階層、各元素以element[Attribute="Value"]的形式撰寫(例如:desktop > window[Name="Notes.txt - Notepad"][Process="Notepad"])、可用的運算子有 Equal to / Not equal to / Contains / Starts with / Ends with / Regular expression match 這 6 種、正規表示式引擎為 .NET、視覺化編輯器使用變數僅限 Equal to 運算子、一個 UI 元素可登錄多個選取器並在失敗時回退到下一個選取器、可切換階層(層級)的啟用・停用來改變搜尋範圍。並提及 Repair selector 可產生修復候選。 ↩ ↩2 ↩3 ↩4 -
Microsoft Learn, UI automation actions. 關於 Wait for window content 動作可等待特定文字・UI 元素出現/消失、Get window 動作的逾時設定(選擇在指定時間內找不到就讓其失敗,或是持續等待)。 ↩ ↩2 ↩3
-
Microsoft Learn, Handle errors in desktop flows. 關於 On Block Error 以區塊為單位的例外處理、動作層級的重試設定(Retry action if an error occurs)。 ↩ ↩2 ↩3
-
Microsoft Learn, Manage machines. 關於透過電腦執行階段應用程式(隨附於 MSI 安裝程式,安裝時選擇「Install the machine-runtime app to connect to the Power Automate cloud portal」)進行電腦註冊、登入 machine runtime 就會自動註冊到當下選擇的環境並顯示電腦名稱・說明・環境、註冊需要 Environment Maker 或 Desktop Flow Machine Owner 角色、直接連線需要 2.8.73.21119 以上版本且 Windows 10 Home・Windows 11 Home 無法使用、可在入口網站的 Monitor > Machines 確認已註冊電腦、建立桌面流程連線時選擇「Directly to machine」並輸入電腦名稱與憑證、從雲端流程啟動桌面流程需要含有人 RPA 的進階使用者方案、無人執行需要為電腦指派處理容量(無人機器人)。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10
-
Microsoft Learn, Record desktop flows. 關於錄製器會以與 UI 元素的關聯記錄滑鼠・鍵盤操作並轉換成動作、記錄方式可選擇 UIA(針對 WPF・WinForms 等較新框架的推薦方式)與 MSAA(針對 VB6 或傳統 Win32 等 UIA 不支援的老舊應用程式)、條件分支與迴圈無法錄製、前提是錄製後要進行編輯。 ↩ ↩2
-
Microsoft Learn, Automate desktop applications. 關於 UI 自動化動作需要目標視窗位於最前面,若不在最前面會自動移動到最前面。 ↩
-
Microsoft Learn, Excel actions. 關於 Launch Excel 建立執行個體、Read from Excel worksheet 讀取單一儲存格・範圍(轉為資料表、將第一行作為欄名的選項)、Write to Excel worksheet 寫入、Get first free row on column 取得空白行。 ↩ ↩2
-
Microsoft Learn, Trigger desktop flows from cloud flows. 關於從雲端流程啟動桌面流程的前提條件(已註冊的電腦或電腦群組、職場・學校帳戶、桌面流程連線、建立連線者擁有符合執行形式的授權)、透過輸入輸出變數在雲端與桌面之間傳遞資料。 ↩ ↩2 ↩3
-
Microsoft Learn, Process capacity. 關於將源自 Process 授權的處理容量指派給電腦即成為無人機器人、一個無人機器人可同時執行一個無人桌面流程、指派是在電腦詳細頁面的「Settings」中的「Unattended bots」滑桿進行、每台電腦的最大機器人數取決於作業系統、容量在環境內共用。 ↩ ↩2
-
Microsoft, Power Automate 的價格. 關於截至 2026 年 7 月的日本公開價格,Power Automate Premium 相當於每使用者每月 2,248 日圓(年繳)、Power Automate Process 相當於每 1 個機器人每月 22,488 日圓(年繳),皆不含消費稅。 ↩
-
Microsoft Learn, Set screen resolution on unattended mode. 關於無人執行時的解析度低於建立時而導致元素被隱藏而失敗時,可以透過流程的內容(Display resolution for unattended runs)或登錄檔來固定解析度。 ↩ ↩2
-
Microsoft Learn, Troubleshoot unattended desktop flow execution failures. 關於有人・無人工作階段之間的解析度或 DPI 縮放差異會成為失敗原因,以及在設計時・執行時都統一 DPI 為 100% 等對策。 ↩ ↩2 ↩3
相關文章
共用相同標籤的最新文章。能以相近的主題延伸理解。
用 Power Automate 自動化業務 ── 雲端流程與桌面流程的分工,以及錯誤處理設計
本文整理 Power Automate 雲端流程與桌面流程的差異、與 PowerShell / VBA 的分工、授權、錯誤處理、UI 自動化的穩定化,以及認證資訊的安全處理,提供將業務自動化導入正式運作的實務設計指引。
Power Automate 的授權 ── Microsoft 365 能免費用到什麼程度,何時需要 Premium
Power Automate 在 Microsoft 365 的範圍內,可以免費建立使用標準連接器的雲端流程,但 HTTP、SQL Server、Dataverse 等進階連接器,以及 RPA、AI Builder,都需要付費授權。本文整理 Premium/Process ...
把 Excel 台帳換成 SharePoint 清單 ── 用共用・歷程・流程整合擺脫「台帳損壞」
把共用資料夾中的 Excel 台帳遷移到 SharePoint 清單(Microsoft Lists)的實務指南。內容整理了同時編輯・覆寫・行位錯亂的解決方式、從 Excel 匯入的步驟、欄位型別設計、正確理解清單檢視閾值 5000,以及與 Power Automate 整...
將 Excel VBA 巨集遷移到 Power Automate ── 用 Office Scripts 取代的範圍,與該保留 VBA 的範圍
本文整理 Excel VBA 巨集能否遷移到 Power Automate。說明 Office Scripts 可以取代的範圍與 VBA 才做得到的事、連接器的限制值、授權要求,以及從盤點開始的分階段遷移做法。
Power Automate 與 PowerShell + 工作排程器的分工 ── 不混用自動化工具,各就各位地串接
本文整理 PowerShell + 工作排程器的夜間批次作業與 Power Automate 流程開始混雜在公司內部的中小企業資訊部門所需的判斷依據:兩者擅長領域的差異、該用哪一種來建置的判斷表、透過 SharePoint 進行鬆散耦合串接的協作模式,以及授權與維運上的注意事項。
相關主題
與本文相近的主題頁面。以本文為起點,可進一步連到相關服務與其他文章。
Windows 技術主題
彙整 KomuraSoft LLC 關於 Windows 開發、故障調查與既有資產活用文章的主題中心。
與本主題相關的服務
本文連結到以下服務頁面,歡迎從最接近的入口查看。
技術諮詢 & 設計審查
協助釐清設計方向、架構邊界、生命週期責任,以及既有 Windows 資產的處理方式。
既有資產活用 & 遷移支援
在持續活用 COM / ActiveX / OCX 資產、原生程式碼與 32 位元相依的同時,協助規劃階段性的遷移。
常見問題
整理諮詢這個主題時常見的問題。
- Power Automate for desktop 可以免費使用嗎?
- 可以。Windows 11 內建了 Power Automate 應用程式,Windows 10 也能從微軟的下載中心免費安裝。即使是職場或學校帳戶,也不需要額外付費,就能使用錄製器、400 種以上的動作、例外處理等建立流程與手動執行(有人執行)所需的完整功能。不過,若要從雲端流程自動啟動、共用流程、集中管理執行紀錄,就需要付費的 Power Automate Premium 授權。
- 要在夜間或清晨無人在場的狀態下執行轉錄流程,需要什麼條件?
- 無人執行(unattended)需要建構成由雲端流程呼叫的形式,前提是要註冊目標電腦、建立桌面流程連線,並為該電腦指派 Power Automate Process 授權。註冊電腦這件事本身,也必須由擁有 Premium 授權的使用者來執行。就技術面而言,無人執行會重新建立一個遠端桌面工作階段來運作,因此目標電腦必須讓所有使用者都已登出;只要還殘留一個處於鎖定狀態的工作階段,在 Windows 10/11 上就會執行失敗。
- 聽說 UI 自動化很容易損壞,實際上能派上用場嗎?
- 只要目標基幹系統的畫面穩定,就能派上用場。造成損壞的原因大多出在 UI 元素的辨識方式(選取器)與等待不足,只要把會變動的屬性改成 Contains 或正規表示式、設定備用選取器、不用固定等待而改用等待元素出現的動作,穩定度就會大幅改善。不過,畫面配置變動就可能損壞這個宿命本身無法消除,因此若目標應用程式更新頻繁,或是一旦停擺就會影響業務的件數與重要程度較高,就應該考慮開發資料串接或改造基幹系統本身,而不是採用 UI 自動化。
- 如果轉錄流程中途失敗,會不會不知道已經輸入到哪裡了?
- 只要設計得當就能避免。重點是讓輸入來源的 Excel 具備狀態欄(未處理・處理中・完成・錯誤)與登錄編號欄,每輸入完一筆,就先確認基幹系統端的登錄結果,再回寫狀態。這樣一來,失敗時已登錄到哪一行會保留在 Excel 端,即使重新執行,也只會處理「未處理」的行,不會發生重複輸入。只要以每一筆為單位進行例外處理,記錄錯誤的行後繼續處理下一行,就能避免因為一筆輸入錯誤而讓整體停擺。