【UiPath 問題 08 】Excel Application Scope 運行出錯

錯誤描述

從 Excel 表中讀取一個單元格的數據并 Log 出來究珊,程序框圖如下:

程序框圖

畫好程序框圖之后運行得到如下錯誤:

運行時錯誤信息
Output 信息

不做任何修改,再次運行,一切正常:

第二次運行時輸出的信息

第二次運行之后竿裂,Excel 處于啟動狀態(tài):

第二次運行 Excel 窗口被激活

試驗:

  1. 關閉 Excel 窗口再次運行玉吁,一切正常
  2. 查看任務管理器,沒有找到 Excel 進程


    任務管理器铛绰,沒有找到 Excel 進程
  3. 關閉 Excel诈茧,關閉 UiPath,再次打開 UiPath捂掰,立即重新運行同樣的程序敢会,一切正常

4.關閉 Excel,關閉 UiPath这嚣,再次打開 UiPath鸥昏,一分鐘之后重新運行同樣的程序,又得到同樣的錯誤姐帚,再次運行吏垮,Excel 窗口激活,一切正常

同樣的錯誤

5.關閉 Excel,關閉 UiPath膳汪,確認任務管理器中沒有 EXCEL 進程唯蝶,等待一分鐘之后再次打開 UiPath 運行同樣的程序,得到同樣的錯誤遗嗽,特征一樣粘我。觀察到出錯彈框之后任務管理器中有 EXCEL 活動進程

觀察到出錯彈框:


出錯彈框

此時任務管理器中有 Excel 進程:


出錯

6.緊接著 5 運行一遍,一切正常痹换。

猜測:
當 EXCEL 進程在活動的時候征字,Excel Application Scope 運行是沒有問題的。

驗證猜測:
打開 Excel娇豫,關閉 UiPath 3 分鐘匙姜,再次打開 UiPath, 運行同樣的程序

結果:
運行一切正常,猜測正確冯痢!

原因分析

  1. 為什么第一次運行總是出錯氮昧?
    Excel Application Scope Activity 啟動 EXCEL 進程的時候出了問題,鑒于最終還是啟動了 Excel 進程(實驗 4 得知)系羞,可以斷定是 Excel Application Scope Activity 啟動的 EXCEL 進程就緒時間太慢郭计,此時 UiPath 往下走的時候 Excel 進程還沒有就緒。

  2. 為什么第二次運行又好了椒振?
    第一次運行的時候出錯,但是并沒有殺死 Excel 進程梧乘,第二次運行的時候用的是第一次啟動澎迎,且已經就緒了的 Excel 進程,所以一切又正常了

  3. 為什么關閉 UiPath 之后选调,立即打開夹供,再次運行,即使是任務管理器沒有 Excel 進程都沒有問題仁堪?
    這個可能與 .NET 的垃圾回收機制有關哮洽。當時還沒有執(zhí)行垃圾回收,相應的變量仍然可用弦聂。過一段時間之后鸟辅,垃圾回收已經執(zhí)行,就會出錯了莺葫。

  4. 這個問題為什么沒人提出匪凉?
    和業(yè)內人士交流的時候說到這個問題,他們都說沒有遇到過這樣的問題捺檬。這個問題和計算機環(huán)境有關再层,大部分的計算機都不會出現這個問題。我也在 Win10 上運行過同樣的程序,但是在 WIN7x64 和 WIN7x32 的計算機上都遇到這樣的問題聂受。估計是 WIN7 系統上 Excel Application Scope Activity 啟動 EXECL 進程用時過長蒿秦。

解決辦法

經過上述的一番論證,問題已經很清晰了:Excel Application Scope Activity 啟動 EXECEL 進程用時過長蛋济,導致 UiPath 往下跑的時候渤早,Excel 進程還沒有就緒

解決思路:
1. 加入延時,等待 Excel 進程就緒之后再往下執(zhí)行

實驗:

  1. 關閉 Excel 窗口
  2. 確認任務管理器中沒有 Excel 進程
  3. 關閉 UiPath瘫俊,等待 1 分鐘
  4. 打開 UiPath, 執(zhí)行如下程序框圖:
加入延時之后的框圖

結果:


仍然出錯

增加延時:


將延時增加到 3 s

結果仍然出錯鹊杖,可以看出延時并沒有被執(zhí)行,總的 執(zhí)行時間仍然是 00:00:01

執(zhí)行輸出

在延時處添加斷點扛芽,調試發(fā)現執(zhí)行到 Excel application scope 處就已經彈出錯誤了骂蓖,這意味著在 Excel application scope 內部出現了錯誤,此時還沒有機會執(zhí)行 Delay川尖。在里面放置 Delay 是沒有意義的登下。

斷點調試結果

2. 創(chuàng)建Excel 進程之后再使用 Excel application scope Activity
實驗:

  1. 關閉 Excel 窗口
  2. 確認任務管理器中沒有 Excel 進程
  3. 關閉 UiPath,等待 1 分鐘
  4. 打開 UiPath, 執(zhí)行如下程序框圖:

結果:
仍然得到如下錯誤:

再次運行(此時叮喳,Excel 進程已經存在)被芳,得到正確輸出的結果。

估計 Start process 運行的速度太慢馍悟,再次嘗試在中間加入延時畔濒,程序框圖如下:

加入延時之后

關閉所有 Excel 窗口,再任務管理器中確認沒有任何 Excel 進程锣咒,關閉 UiPath 一分鐘之后再打開侵状,運行,結果如下:

最終結果

沒有錯誤毅整,終極解決方案誕生了趣兄!

留意到 Excel application scope Activity 操作 Excel 完成之后,僅僅是關閉了被操作的工作簿悼嫉,但是 并沒有關閉 Excel 進程艇潭。這意味著可能有內存溢出的問題∠访铮可以對原程序進行一些改良:在程序末尾添加 Kill process

在末尾添加 Kill Process 來關閉 Excel

當然關閉 Excel 的方法不止一種蹋凝,還可以用 Close Application Activity ,效果是一樣的。

這時辛臊,在執(zhí)行程序之后可以看到 Excel 已經關閉仙粱,也能正確地讀取到數據。一切都很美好彻舰!但是過了沒多久伐割,在確認資源管理器中沒有 Excel 進程的情況下候味,繼續(xù)運行該程序還是得到同樣的錯誤:第一次運行出錯,第二次沒有問題隔心。

第一次運行還是會有錯誤


從 Output 中可以看到此時 3s 的延時已經執(zhí)行白群,


此時延時已經執(zhí)行

資源管理器里看到有兩個 EXCEL 進程:


任務管理器

這意味著 即使 Start Process 已經啟動了 EXCEL 進程, Excel application scope Activity 還是會啟動自己的 EXCEL 進程硬霍。嘗試 關閉一個進程帜慢,保留一個進程,再次運行唯卖,結果一切 OK粱玲。

結論: 思路 2 不正確,但是又發(fā)現了一些新的特性:

  1. 這個問題的原因: Excel application scope Activity 啟動自己的 EXCEL 進程的時候還沒有就緒就引用拜轨,
  2. 同一個程序中 Start Process 得到的 Process 是不會被 Excel application scope Activity 引用的抽减。
  3. 單步執(zhí)行的時候,這個問題是不存在的橄碾,估計是由于單步執(zhí)行的時候有足夠多的時間來啟動進程卵沉。

3. 假如在工作簿已經打開的情況下,Excel application scope Activity 還會再次創(chuàng)建 EXCEL 進程嗎法牲?
實驗:

  1. 打開目標工作簿
  2. 打開 UiPath, 執(zhí)行如下程序框圖:

結果:輸出一切正常史汗,任務管理器里面只有一個 EXECEL 進程

為了看清楚是否在執(zhí)行過程新建了 EXCEL 進程,加入斷點拒垃,單步執(zhí)行停撞,發(fā)現 自始至終只有一個 EXCEL 進程

單步執(zhí)行

這時我們可以斷定:當工作簿已經打開,Excel application scope Activity 就不會重新創(chuàng)建 EXCEL 進程恶复,也就不存在由于 EXCEL 進程未就緒就引用的錯誤

4. 打開目標工作簿之后再使用 Excel application scope Activity
什么情況下 Excel 或啟動兩個進程怜森?假如在使用 Excel application scope Activity 之前,工作簿已經打開谤牡,是否還會創(chuàng)建兩個進程?

實驗:

  1. 關閉 Excel 窗口
  2. 確認任務管理器中沒有 Excel 進程姥宝,如果有的話就先 結束進程
  3. 關閉 UiPath翅萤,等待 1 分鐘
  4. 打開 UiPath, 執(zhí)行如下程序框圖:
image.png

注意:這里的 Start Process Activity 中指定了工作簿路徑

Start Process 輸入 工作簿完整路徑 的方法是設置 Properties:

在Srart Process 中指定工作簿

注意:
Auguments 的工作簿路徑必須是完整路徑,不能是相對路徑腊满,因為WorkingDirectory 是EXECEL.EXE 所在的文件夾套么,而不是項目文件夾

結果:單步執(zhí)行觀察任務管理器,果然也始終只有一個進程碳蛋,而且運行也沒有問題胚泌,能得到正確的輸出!

此時運行只有一個進程
  • 10s 的延時感覺有點長,假如刪除延時肃弟,是否還好玷室?
延時

結果:不好零蓉,還是會啟動兩個進程,然后得到同樣的錯誤
所以說 這個延時是必須的穷缤!

  • 那么延時 10S 是不是有點長敌蜂?3S 行不行?

結果:運行成功津肛,只有一個進程章喉,沒有錯誤,結果正確身坐!

終極解決方案應該是這樣的:

正確的做法

要點總結:

  1. 在使用 Excel application scope Activity 之前要先打開目標工作簿
  2. 使用 Start Process 打開工作簿之后要加入延時秸脱,等待程序就緒
  3. Excel application scope Activity 不會自動關閉Excel進程,最后要用 Kill Process 關閉 Excel 進程
  4. 這個問題會出現在 WIN7 上

其它辦法

其實還有一種辦法來解決這個問題部蛇,就是不用 Excel application scope Activity 摊唇。UiPath 中提供了兩組 Activity 來實現 Excel 操作。詳細信息請看 這里

感想

為了追殺這個問題辛苦了一整天搪花,雖然很辛苦遏片,這個問題終于搞清楚了,很值得撮竿∷北悖客官,請盡情贊賞吧幢踏!

返回目錄

更多 UiPath 相關的資訊髓需,請關注公眾號:流程自動化機器人教程
由于簡書禁止直接在文章中插入公眾號二維碼,請點擊 這里 了解添加該公眾號的細節(jié)房蝉。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末僚匆,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子搭幻,更是在濱河造成了極大的恐慌咧擂,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檀蹋,死亡現場離奇詭異松申,居然都是意外死亡,警方通過查閱死者的電腦和手機俯逾,發(fā)現死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門贸桶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人桌肴,你說我怎么就攤上這事皇筛。” “怎么了坠七?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵水醋,是天一觀的道長旗笔。 經常有香客問我,道長离例,這世上最難降的妖魔是什么换团? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮宫蛆,結果婚禮上艘包,老公的妹妹穿的比我還像新娘。我一直安慰自己耀盗,他們只是感情好想虎,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叛拷,像睡著了一般舌厨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忿薇,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天裙椭,我揣著相機與錄音,去河邊找鬼署浩。 笑死揉燃,一個胖子當著我的面吹牛,可吹牛的內容都是我干的筋栋。 我是一名探鬼主播炊汤,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼弊攘!你這毒婦竟也來了抢腐?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤襟交,失蹤者是張志新(化名)和其女友劉穎迈倍,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體捣域,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡授瘦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了竟宋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡形纺,死狀恐怖丘侠,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情逐样,我是刑警寧澤蜗字,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布打肝,位于F島的核電站,受9級特大地震影響挪捕,放射性物質發(fā)生泄漏粗梭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一级零、第九天 我趴在偏房一處隱蔽的房頂上張望断医。 院中可真熱鬧,春花似錦奏纪、人聲如沸鉴嗤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽醉锅。三九已至,卻和暖如春发绢,著一層夾襖步出監(jiān)牢的瞬間硬耍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工边酒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留经柴,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓甚纲,卻偏偏與公主長得像口锭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子介杆,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容