Excelマクロとクラウド
単純な思いつきだったが、なかなか良かった。
お題:Teamsクラウドに置いてある沢山のExcelから勝手に選んで、細かーい自動処理したい。
答えはExcelマクロでしたが、色々と考えたのでそのメモ。
①Power Automate
これはExcelを開きもしないので結構強力。しかし、テーブル設定を掛けねばならないので、そこを誰かが外すだろう。それにテーブル設定掛けると表の見た目がダンダラになる。そして、ExcelのDB的な読み込みはまだ良いとしても、書き込みはかなりトラブルのを体験している。
本当はShare Pointに持っていきたいんだけど、そうもいかない。
しかもオートトリガーにすると時差があるし、Excel修正の度にトリガーが発生しまくる。皆はWeb Excelで使ってると聞くし。
②Office Script
Web Excelだとこれか?でも調べたらブック間のデータやり取りはコピペらしい。それは怖い。
この言語はどうなるのだろう?出た当初は物凄く期待したのに、全く進展の気配が感じられない。
③Excelマクロ
だってこれ、ローカル環境だしなぁ…
あれ?ローカル環境って物理的にファイルがPCにある事じゃなくて、デスクトップExcelを使ってるという意味では?
試してみるとクラウドのExcelも普通にマクロで動く。
ならば、予め書き込む相手のファイルもデスクトップExcelで開いて貰えばいい!
どのファイルを予め開いて欲しいのかチェックして、ダイアログ表示。作業者に開いて貰えばいい!
今回は、
クラウド上に置いてある30個のExcelの中から4個を選び、
更にそのExcelの中から書き込みシートを5シートの中から選び、
更に書き込むセルを選び…
と面倒極まるものだったが、
生成AIに頼んだら無事に半日で動き出した。
自力で作ってたら1ヶ月は掛かる。
デバッグが進むとコードがめちゃくちゃになってたのは間違いない。
そう、もう二度と直せない。
どれくらい面倒か?
①親Excelには表があって、そこに参照用のキーがあるけど、これはIDではなくて文字列。一般に、長い様だ。
②子Excelは20個近く有って、どの番号を選ぶのかはピンポイント。
③子Excelには5〜6個のシート。どのシートを選ぶのが?が面倒。
④親の参照用キーが、子Excelのシート名が内包してくれればいいのに、
子Excelのシート名が極端に短い場合があって、
その場合はそのシート内の特定位置にフル名称があるのでそれを利用。
⑤逆に親の参照キーの方が短くて、逆に子Excelの方が長い場合があって…
あー、もう私には綺麗なコードでは書けません。