Ui PathでExcelの複数シートにデータ入力

## Ui Pathで複数シートにわたりデータを書き込む様子

https://twitter.com/MitsuhiroM82423/status/1683843677444276224

みなさん、こんにちは。
紙、印鑑、手作業に埋もれて業務をしている昭和男子の会社員です。

前回、PowerAutomateDesktopで作成した、**請求書を自動でEXCELファイルに「発行部署名」「電話番号」が記入される作業を自動化**したものをUiPathを使って同じように作成しました。

作成理由は、この２つのRPAを使いこなして、それぞれの特徴に合わせて今後の業務の改善に役立ることが出来ればと思い作成しました。

`前回の記事はこちら`

https://qiita.com/miyabe-mitsuhiro/items/3347efaf45ac13d2c488

今後は、**二刀流**で業務改善に臨みたいと思います。

## 使用するもの
・Ui Path
・Excel

## 請求書（Excel）
ここに電話番号と発行部署名を入力していきます。
![2023-07-22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288463/e80c2b46-41e9-5cfc-5210-a33a7858f3ef.png)
## Ui Pathの設定
![2023-07-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288463/bffdc4a0-916c-65d6-f49b-ef89025ca61d.png)
![2023-07-25 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288463/27e5ea5a-5a34-c279-9049-ddf6fa7bcba2.png)
![2023-07-25 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288463/75e5c963-d0d6-0bf1-80d4-af5fe48ecf29.png)

**フローのソースコード**
```ruby:Excelの複数シートデータ入力
<?xml version="1.0" encoding="utf-16"?><ClipboardData Metadata="{x:Null}" Version="1.0" xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:sap2010="http://schemas.microsoft.com/netfx/2010/xaml/activities/presentation" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=System.Private.CoreLib" xmlns:ue="clr-namespace:UiPath.Excel;assembly=UiPath.Excel.Activities" xmlns:ueab="clr-namespace:UiPath.Excel.Activities.Business;assembly=UiPath.Excel.Activities" xmlns:ui="http://schemas.uipath.com/workflow/activities" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><ClipboardData.Data><scg:List x:TypeArguments="x:Object" Capacity="1"><p:Sequence DisplayName="Main Sequence" VirtualizedContainerService.HintSize="784,1480"><WorkflowViewStateService.ViewState><scg:Dictionary x:TypeArguments="x:String, x:Object"><x:Boolean x:Key="IsExpanded">True</x:Boolean></scg:Dictionary></WorkflowViewStateService.ViewState><ueab:ExcelProcessScopeX DisplayAlerts="{x:Null}" ExistingProcessAction="{x:Null}" FileConflictResolution="{x:Null}" LaunchMethod="{x:Null}" LaunchTimeout="{x:Null}" MacroSettings="{x:Null}" ProcessMode="{x:Null}" ShowExcelWindow="{x:Null}" DisplayName="Excel プロセス スコープ" VirtualizedContainerService.HintSize="721.6,1368"><ueab:ExcelProcessScopeX.Body><p:ActivityAction x:TypeArguments="ui:IExcelProcess"><p:ActivityAction.Argument><p:DelegateInArgument x:TypeArguments="ui:IExcelProcess" Name="ExcelProcessScopeTag" /></p:ActivityAction.Argument><p:Sequence DisplayName="実行" VirtualizedContainerService.HintSize="688,1281.6"><WorkflowViewStateService.ViewState><scg:Dictionary x:TypeArguments="x:String, x:Object"><x:Boolean x:Key="IsExpanded">True</x:Boolean></scg:Dictionary></WorkflowViewStateService.ViewState><ueab:ExcelApplicationCard Password="{x:Null}" ReadFormatting="{x:Null}" AutoSave="False" DisplayName="Excel ファイルを使用" VirtualizedContainerService.HintSize="625.6,1169.6" ResizeWindow="Maximize" TemplatePath="\\mvssmain\共有\05_商品\専用\11_契約関連\02_リベート契約\請求書電話番号変更\請求書.xls" UseTemplate="True" WorkbookPath="\\mvssmain\共有\05_商品\専用\11_契約関連\02_リベート契約\請求書電話番号変更\請求書.xls"><ueab:ExcelApplicationCard.Body><p:ActivityAction x:TypeArguments="ue:IWorkbookQuickHandle"><p:ActivityAction.Argument><p:DelegateInArgument x:TypeArguments="ue:IWorkbookQuickHandle" Name="Excel" /></p:ActivityAction.Argument><p:Sequence DisplayName="実行" VirtualizedContainerService.HintSize="592,876.8"><WorkflowViewStateService.ViewState><scg:Dictionary x:TypeArguments="x:String, x:Object"><x:Boolean x:Key="IsExpanded">True</x:Boolean></scg:Dictionary></WorkflowViewStateService.ViewState><ueab:ForEachSheetX DisplayName="繰り返し (Excel の各シート)" VirtualizedContainerService.HintSize="529.6,639.2" Workbook="[Excel]"><ueab:ForEachSheetX.Body><p:ActivityAction x:TypeArguments="ue:WorksheetQuickHandle, x:Int32"><p:ActivityAction.Argument1><p:DelegateInArgument x:TypeArguments="ue:WorksheetQuickHandle" Name="CurrentSheet" /></p:ActivityAction.Argument1><p:ActivityAction.Argument2><p:DelegateInArgument x:TypeArguments="x:Int32" Name="CurrentIndex" /></p:ActivityAction.Argument2><p:Sequence DisplayName="実行" VirtualizedContainerService.HintSize="496,472"><WorkflowViewStateService.ViewState><scg:Dictionary x:TypeArguments="x:String, x:Object"><x:Boolean x:Key="IsExpanded">True</x:Boolean></scg:Dictionary></WorkflowViewStateService.ViewState><ueab:WriteCellX Cell="[CurrentSheet.Cell(&quot;t12&quot;)]" DisplayName="セルに書き込み" VirtualizedContainerService.HintSize="433.6,160" Value="[&quot;Tel：000-000-0000&quot;]" /><ueab:WriteCellX Cell="[CurrentSheet.Cell(&quot;t13&quot;)]" DisplayName="セルに書き込み" VirtualizedContainerService.HintSize="433.6,160" Value="[&quot;部署：○○部&quot;]" /></p:Sequence></p:ActivityAction></ueab:ForEachSheetX.Body></ueab:ForEachSheetX><ueab:SaveExcelFileX DisplayName="Excel ファイルを保存" VirtualizedContainerService.HintSize="529.6,85.6" Workbook="[Excel]" /></p:Sequence></p:ActivityAction></ueab:ExcelApplicationCard.Body></ueab:ExcelApplicationCard></p:Sequence></p:ActivityAction></ueab:ExcelProcessScopeX.Body></ueab:ExcelProcessScopeX></p:Sequence></scg:List></ClipboardData.Data></ClipboardData>
```
## ポイントは、Excelシートの指定の違い
**PowerAutomateDesktop**では、入力したいExcelシートを指定するのに**変数を使用**しました。
**UiPathでは、「繰り返し（Excelの各シート）」というアクティビティ**があるので変数を使用することなく存在する**すべてのシートに自動で繰り返し作業が設定可能**でしたので設定するアクティビティがPowerAutomateDesktopより少なくて済みました。
同じ**RPA**でも考え方に違いがありますね～。