やるのが当たり前…じゃなかった！送付先別にファイルを分ける作業は自動化できた！

# 地味に手間。でも当たり前だと思ってた。
Excelの編集って、単純作業だけど手間がかかるものたくさんありますよね…。
いつもお決まりの編集手順。それなら自動化できるのでは！？と取り組んでみました！！！

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">作ってみてよかったぁぁぁぁ！！！！<br>何ができるか分かるまでにすごい時間がかかってしまった…。<br>でも、職場の反応も悪くなかった！<br>もっともっと進化させて！と応援してもらったので張り切ります！笑<br> <a href="https://twitter.com/hashtag/protoout?src=hash&amp;ref_src=twsrc%5Etfw">#protoout</a> <a href="https://twitter.com/hashtag/powerAutomateDesktop?src=hash&amp;ref_src=twsrc%5Etfw">#powerAutomateDesktop</a> <a href="https://twitter.com/hashtag/%E8%87%AA%E5%8B%95%E5%8C%96?src=hash&amp;ref_src=twsrc%5Etfw">#自動化</a> <a href="https://twitter.com/hashtag/RPA?src=hash&amp;ref_src=twsrc%5Etfw">#RPA</a> <a href="https://twitter.com/hashtag/%E6%A5%AD%E5%8B%99%E6%94%B9%E5%96%84?src=hash&amp;ref_src=twsrc%5Etfw">#業務改善</a> <a href="https://twitter.com/hashtag/%E6%A5%AD%E5%8B%99%E5%8A%B9%E7%8E%87%E5%8C%96?src=hash&amp;ref_src=twsrc%5Etfw">#業務効率化</a> <a href="https://t.co/LwemNRVnZ3">pic.twitter.com/LwemNRVnZ3</a></p>&mdash; 紺 (@navy_blue919) <a href="https://twitter.com/navy_blue919/status/1686969656379338752?ref_src=twsrc%5Etfw">August 3, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### この作業は当たり前、今までもみんなやってたし。
こんにちは、小売業の総務部で事務作業に従事しております。
運営店舗ごとの様々な進捗状況の確認や、公的に設置の必要な責任者など「管理」することが仕事の大半を占めています。
Excelを使用して、〇〇一覧表、〇〇管理表などを作って管理することが多く、更新作業も月に1度以上発生するものが多いです。そして、確認などで発信する場合は店舗ごと・取引先ごとなど送る相手によってファイルを分けて送らなければいけないことも多々あります。でも、それが当たり前。Excel使いこなしてなんぼ！みたいな雰囲気が…。
だけど、地味に手間だし、時間かかるし…。ボタン1つでサササッとできるならその方がいいに決まってます！
### 店舗別に分けて作成してたファイルの自動化にチャレンジ
研修で**Power Automate Desktop**を知りさっそく試してみることに！
身近な業務で試そうと、**請求状況の進捗管理**にターゲットロックオンしました。
店舗改装などの際に、商品の陳列応援依頼を取引先にすることがあり、その費用支払いの請求書処理状況を確認する業務です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/8e341d2b-e143-a67a-ac5b-ed153bd7c1d9.png)
↑こんな感じで3,000行あるデータを、日付でソートして古いデータを削除、辞退フラグでソートして不参加者を削除、支払いフラグでソートして支払い済みを削除…と不要なデータを削除。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/c29ebc49-c6d3-2528-8599-d620e912e2fb.png)
↑250行くらいまで減ったデータ。
次は、店舗に確認依頼するために不要な項目列を削除…
<img width="60%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/458ab021-ea75-bcb0-2abf-96dd946ab4f9.png">
↑やっと少しすっきりしたデータを次は店舗ごとに別々のファイルに分けて、体裁を整えそれぞれの店舗へ発信します。

少しすっきりしたデータにたどり着くまでも面倒ですが、そのファイルを店舗別に分けるのは「名前をつけて保存」の行程もプラスされて私は嫌いな作業です(笑)
自動化できるなら後半のファイルの分割だ！と焦点をさらに絞ってみました。

**◎少しすっきりしたデータまで編集し、指定フォルダに保存すると…
→新しいブックにそれぞれの店舗のデータを貼り付ける
→作成した店舗別のファイルに店舗名をつけて保存する**

今はここまでチャレンジしてみよう！と取り組みました。

# フローの全体像とちょっとだけポイント
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/bb506325-8830-8214-9999-9637ad3922cf.png)

<details><summary>1～6までのポイント</summary>

最初5・6番が分からず、リストが思ったように作れず苦労しました。
[大変参考にさせていただきました！](https://marukentokyo.jp/pad_datatablelist/"完全自動化研究所")ありがとうございます！
設定は下記画像の通りです^^

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/54ce6d46-ad04-751d-4640-76a453cdd4c7.png)

</details>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/1281b3b5-3040-b666-2692-9b1c061dfa88.png)

<details><summary>7～18までのポイント</summary>

こちらのポイントは2つ。
1つめは7番`For each`。これがなければ全店分の新しいファイルは完成しません。

<img width="70%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/4f17404c-157f-3f6c-219b-a20a9058893d.png">

2つめは`キーの送信`。フィルタで抽出したいときどうするの！？と迷子になっていた私を助けてくれました…！
[〇Power Automate Desktopがなんとなく使える講座 #9 キーの送信でExcelを操作する](https://qiita.com/spumoni/items/2974a83e2a20380890c6)
[〇Power Automate Desktopでキー操作を送信する方法](https://sunagitsune.com/powerautomatedesktopkeysent/)
本当にありがとうございます！！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/6271c215-85b2-941a-5b41-8dc6c8110350.png)

:warning:今回のフローで使用したExcelには元々フィルターがかかっているため「フィルターをかける」という工程は省いています。もしフィルターなしのファイルにフロー内でフィルターをかけたい場合は`キーの送信`で「送信するテキスト」に{Control}({Shift}({L}))と記載した工程を追加してください。(今回のフローだと8番と9番の間に追加。)

</details>

**これで完了です！**
`Power Automate Desktop`はフローを見るとなんとなく中の設定まで分かりそうなのが良いですね…！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/f4338445-767e-6b49-afa4-0f40d6612415.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/49696537-c672-0fb3-1f40-021424b6b38b.png)


ちゃんと指定のフォルダに店舗名入りのファイルが保存されています^^
フロー実行のボタンを押すだけでパタパタパタッと進んでいくことに健気さすら感じました(笑)


**フローの詳細設定を確認したい方は下記記事をご参照ください！！**

https://qiita.com/navy-blue919/items/c75181e187a727e42eed

### Robinのコードはこちらです

```markdown:フロー
Folder.GetSpecialFolder SpecialFolder: Folder.SpecialFolder.Personal SpecialFolderPath=> SpecialFolderPath
Excel.LaunchExcel.LaunchAndOpen Path: $'''%SpecialFolderPath%\\自動化使用ファイル\\店舗応援\\未請求一覧.xlsx''' Visible: True ReadOnly: False LoadAddInsAndMacros: False Instance=> miseikyu
Excel.SetActiveWorksheet.ActivateWorksheetByName Instance: miseikyu Name: $'''未請求_項目整理'''
Excel.ReadFromExcel.ReadAllCells Instance: miseikyu ReadAsText: False FirstLineIsHeader: True RangeValue=> ExcelData
Variables.RetrieveDataTableColumnIntoList DataTable: ExcelData ColumnNameOrIndex: $'''店名''' ColumnAsList=> miselist
Variables.RemoveDuplicateItemsFromList List: miselist IgnoreCase: False
LOOP FOREACH CurrentItem IN miselist
    Excel.ActivateCellInExcel.ActivateCell Instance: miseikyu Column: $'''B''' Row: 1
    MouseAndKeyboard.SendKeys.FocusAndSendKeysByInstanceOrHandle WindowInstance: miseikyu TextToSend: $'''{Alt}({Down})''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
    MouseAndKeyboard.SendKeys.FocusAndSendKeysByInstanceOrHandle WindowInstance: miseikyu TextToSend: $'''{Down}{Down}{Down}{Down}{Down}{Down}{Down}{Down}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
    MouseAndKeyboard.SendKeys.FocusAndSendKeysByInstanceOrHandle WindowInstance: miseikyu TextToSend: $'''%CurrentItem%{Return}''' DelayBetweenKeystrokes: 100 SendTextAsHardwareKeys: False
    MouseAndKeyboard.SendKeys.FocusAndSendKeysByInstanceOrHandle WindowInstance: miseikyu TextToSend: $'''{Control}({A}){Control}({C})''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
    Excel.LaunchExcel.LaunchUnderExistingProcess Visible: True Instance=> NewExcel
    MouseAndKeyboard.SendKeys.FocusAndSendKeysByInstanceOrHandle WindowInstance: NewExcel TextToSend: $'''{Control}({V})''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
    Excel.SelectCellsFromExcel.SelectCells Instance: NewExcel StartColumn: $'''A''' StartRow: 1 EndColumn: $'''A''' EndRow: 1
    Excel.CloseExcel.CloseAndSaveAs Instance: NewExcel DocumentFormat: Excel.ExcelFormat.FromExtension DocumentPath: $'''%SpecialFolderPath%\\自動化使用ファイル\\店舗応援\\未請求一覧_%CurrentItem%'''
END
Excel.CloseExcel.Close Instance: miseikyu

```

# 実際に作業している人の声を聞こう
せっかく作ったので、使えるかどうか聞いてみよう！と同じチームで実際にこの作業を毎月行っている2人+上司に見てもらいました！
**「いつもやっているデータ加工作業のうち、店舗別にファイルを分ける部分を自動化してみました。力不足で、元データから編集まで＆店舗別に分けた後の見やすくする編集まではできませんでした」**
と話してから実際の動きと結果を見てもらいました。

「現時点ではここまでできました。見てみてどうでしょうか…？もっとこうなったらとかありませんか？」と聞いてみると…

**「少しだったとしても、作業が楽になることは間違いないので良いのではないでしょうか！」** との総括をいただきました。
ありがとうございます！！！！！

### メンバーから出てきた、もっとこうしたい！！！

- 元データからの編集も自動にして欲しい
- 最終的に店に発信する時の文書の形まで完成させて欲しい
- この業務だけじゃなく違う業務でもこういうのができたら嬉しい
- 店舗からの報告で返ってきたファイルも自動保存したい
- 最終の進捗報告ファイルまで作れたら理想的！

私が作った物を見てくれたことで、他の業務のことにまで「こうなったらいい！」という思いを持ってくれるとは予想外でした…！！！嬉しい誤算！
自分がアクションを起こすことで小さなことからでも変えていけるのかもしれない…と感じた出来事でした^^

ここまでお付き合いいただきありがとうございました！