Hi
I’m new to power automate desktop and this community. Having trouble trying to run desktop automation actions with excel… for example… I tried using desktop recorder, then after hitting record button, in my open excel file, clicking formulas tab then Name manager button. When I try to run the flow, it just sits at the click window tab (formula) action and does nothing… it’s like it hasn’t recognised the Excel menu “formulas” tab hi element? I’ve also tried to use the sendkeys action but didn’t appear to work either… what am I missing?
cheers,
ABillsy
Solved! Go to Solution.
Hi @Anonymous ,
Thank you for your feedback. Adding the focus window action seem to resolve my issue. Without it, the send keys action was not working.
If New and Close are the only 2 UI buttons that you are trying to use, try a Send Keys {Alt}()n and Send Keys {Alt}()c.
Note that in Excel, to use the ribbon, the Alt key is pressed once, not held down, so hot keys appear outside the parenthesis. Another version for File -> New is {Control}(n) and another version for Close is {Alt}({F4}).
This next piece should have nothing to do with your UI selectors, but if you want to manipulate the Excel with PAD (Save, Close, Read, Write, etc), you must “Attach to running Excel instance” first.
Best of Luck!
Hello again @ABillsy
Why don't you use window instance %ExcelInstance% to be focused? You can easily identify the window of currently opened Excel instance.
I have created a sample "For each" loop as following, and it's working for me.
Folder.GetFiles Folder: $'''C:\\Users\\User01\\Documents''' FileFilter: $'''*.csv''' IncludeSubfolders: False FailOnAccessDenied: True SortBy1: Folder.SortBy.NoSort SortDescending1: False SortBy2: Folder.SortBy.NoSort SortDescending2: False SortBy3: Folder.SortBy.NoSort SortDescending3: False Files=> Files
LOOP FOREACH CurrentItem IN Files
Excel.LaunchAndOpen Path: CurrentItem Visible: True ReadOnly: False LoadAddInsAndMacros: False Instance=> ExcelInstance
Excel.Advanced.ActivateCell Instance: ExcelInstance Column: $'''B''' Row: 2
UIAutomation.Windows.FocusByInstanceOrHandle WindowInstance: ExcelInstance
MouseAndKeyboard.SendKeys TextToSend: $'''{Control}({Shift}({Down}))''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
MouseAndKeyboard.SendKeys TextToSend: $'''{Control}({F3})''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
MouseAndKeyboard.SendKeys TextToSend: $'''{Return}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
MouseAndKeyboard.SendKeys TextToSend: $'''{Return}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
MouseAndKeyboard.SendKeys TextToSend: $'''{Alt}({F4})''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
Excel.CloseAndSaveAs Instance: ExcelInstance DocumentFormat: Excel.ExcelFormat.OpenXmlWorkbook DocumentPath: CurrentItem.NameWithoutExtension
END
Please try it.
Thank you.
Did you remember to click on record in the Desktop recorder? (Might be a stupid question)
When you have clicked record you should see something like this (When you point on Formula)
Yes, definitely clicked record and saw the red frame highlights as I clicked on menu item and clicked menu button.
Hello @ABillsy
You can also use keyboard shortcut to navigate through the ribbon menu.
To open Name Manager, enter "Alt - M - N".
Excel.Launch Visible: True LoadAddInsAndMacros: False Instance=> ExcelInstance
UIAutomation.Windows.FocusByInstanceOrHandle WindowInstance: ExcelInstance
MouseAndKeyboard.SendKeys TextToSend: $'''{Alt}(){M}{N}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
Hi @ABillsy
So as to see if there could be an easier way could you please clarify what exactly are you trying to achieve by using the Formula menu?
-------------------------------------------
Help fellow beings find relevant posts.
Upvote to a supporting response.
Mark as solution to an answer.
Hi @Anonymous ,
Thank you for your feedback. Adding the focus window action seem to resolve my issue. Without it, the send keys action was not working.
Hi @VJR ,
Thank you for your reply. I was trying to use the send keys action to open the name manager in excel. @Anonymous 's reply pointed me to the solution which was to use the Focus window action first.
I now have a new problem though... I am opening all excel csv files in a particular folder using the for each loop, and then for each file I want to use the send keys action. When i use the "Focus window" action I now need the UI selector to dynamically update the name property to the excel filename... I have clicked edit selector and then New, then turned toggle on custom off then changed the name property from:
To:
Finally turning off Custom toggle...
However, when I add and use this custom dynamic UI selector with the Focus Window action, it doesn't recognise the window. I don't get an error... it just sits on the Focus window action runnning infintely.
Any ideas?
Just uncheck NAME from the window (header) UI selector. Then, it will work for the Excel in focus rather than being for a specific Excel window.
Thanks for the feedback @MichaelAnnis .. I unchecked NAME from the window (header) UI selector as you suggested, but still looks like it doesn't execute the action (just sits idle ono it and does not move to next action "Send keys" which I put a stopper on)... refer my pics below in case I have missed something? (Last pic shows it idle on Focus window action, with excel file open, where i had unchecked NAME i the UI selector updated in previous pic)
Hi @ABillsy
Thanks for responding back with the details of the problem.
The original reason why I asked what are you doing with the Name manager is that spying the fields via UI automation directly on the Excel application is going to cause a hell lots of problems. One thing will work, then the next wont and again the same. And might work once but not the next time and so on.
The best option is to write a macro in an Excel and call that from the PAD's "Run Excel macro" action.
Excel's Object Model Library will be easily available to you while writing the macro and therefore would make things way easy.
This is an easier approach until Microsoft develops a way of writing Code stages within PAD itself just like the other RPA tools. But if you are unable to use an Excel for writing a macro due to "project reasons" then you will have to stick with trying the screen scraping and spying approach that you are already doing.
Thanks.
VJ
Thanks @VJR ,
Unfortunately in this instance, I don't have the luxury of leveraging the excel macro ☹️.. However, definitely agree that your proposed approach would be far better. I've noticed the built in Excel RPA actions appear to work pretty well too, but may be a while before we see some added excel actions to accommodate wider automation functionality to the office365 suite.
For now, the focus action and send keys appear to be working quite well, except I can't get the UI selector to dynamically focus the new window (ignoring the NAME header) as @MichaelAnnis had suggested... any ideas?
kind regards,
ABills
If New and Close are the only 2 UI buttons that you are trying to use, try a Send Keys {Alt}()n and Send Keys {Alt}()c.
Note that in Excel, to use the ribbon, the Alt key is pressed once, not held down, so hot keys appear outside the parenthesis. Another version for File -> New is {Control}(n) and another version for Close is {Alt}({F4}).
This next piece should have nothing to do with your UI selectors, but if you want to manipulate the Excel with PAD (Save, Close, Read, Write, etc), you must “Attach to running Excel instance” first.
Best of Luck!
Hello @ABillsy
You should set the break point (red circle) at action No. 12 "Wait 2 seconds" instead of at action No. 11 "Send keys", if you want No. 11 to be executed.
Or you can hit F10 key to run next action (step by step).
Thank you.
Hello again @ABillsy
Why don't you use window instance %ExcelInstance% to be focused? You can easily identify the window of currently opened Excel instance.
I have created a sample "For each" loop as following, and it's working for me.
Folder.GetFiles Folder: $'''C:\\Users\\User01\\Documents''' FileFilter: $'''*.csv''' IncludeSubfolders: False FailOnAccessDenied: True SortBy1: Folder.SortBy.NoSort SortDescending1: False SortBy2: Folder.SortBy.NoSort SortDescending2: False SortBy3: Folder.SortBy.NoSort SortDescending3: False Files=> Files
LOOP FOREACH CurrentItem IN Files
Excel.LaunchAndOpen Path: CurrentItem Visible: True ReadOnly: False LoadAddInsAndMacros: False Instance=> ExcelInstance
Excel.Advanced.ActivateCell Instance: ExcelInstance Column: $'''B''' Row: 2
UIAutomation.Windows.FocusByInstanceOrHandle WindowInstance: ExcelInstance
MouseAndKeyboard.SendKeys TextToSend: $'''{Control}({Shift}({Down}))''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
MouseAndKeyboard.SendKeys TextToSend: $'''{Control}({F3})''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
MouseAndKeyboard.SendKeys TextToSend: $'''{Return}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
MouseAndKeyboard.SendKeys TextToSend: $'''{Return}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
MouseAndKeyboard.SendKeys TextToSend: $'''{Alt}({F4})''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
Excel.CloseAndSaveAs Instance: ExcelInstance DocumentFormat: Excel.ExcelFormat.OpenXmlWorkbook DocumentPath: CurrentItem.NameWithoutExtension
END
Please try it.
Thank you.
Thankyou @Anonymous ,
Your proposed solution to use variable %ExcelInstance% instead of UI selector worked perfectly! 😊
I feel silly for not thinking to try that instead. Once again, thank you.
kind regards, ABillsy
Hi @MichaelAnnis ,
Thank you for the feedback. I have implemented your suggestion to get rid of the new & close buttons thereby removing the need for any UI selectors. Together with @Anonymous suggestion to use the variable %ExcelInstance% instead for the Focus window action has now resulted in the flow working perfectly.
Once again, thank you both for your help 👍