空談録

世界で5人くらいに役立ちたい

ExcelにPython載ってもVBAは不滅だと思う話

新年なのでぽえむすたーと。

さて、年末くらいにExcelPythonをのっけることを検討する話が出てましたね。
最初よくわからずそんなんないやろという気持ちでしたが、まあPythonのお勉強はしたいのでぜひ頑張ってほしいという気持ち。

ところでこの件、割とググってると「VBAがなくなるかも!?」みたいな話が出てきます。
今出てる情報的にどう考えてもVBAが死ぬ話ではないのでその辺の思考的なのをまとめたいという記事。

中の人じゃないので本当の事実は知らないです。正確な情報はないです。その辺はご承知ください。

とりあえず追っていきましょう

前提条件

VBAの代替って話ですので、現状のVBA同様の環境になることを想定します。
つまりOfficeに言語環境を組み込み、Officeのインストールだけでスクリプトの実行が行える環境です。

Pythonのっけるにしてもどのバージョン問題

いまいちこの辺詳しくないのですが、Pythonのどのバージョンをのっけるかってそう簡単に決まる話ではないと思われます。
Python 2.xと3.xでごかんせいがーてきな話は有名ですが、Python 3.x系であればすべて同じ構文が使えるんです?というところがあると思っています。
つまり3.6と3.7で言語構文的なところに変化がないかというところ。

この間で新しく新機能が~って話になるとかなりつらみが出てきます。
新しいPythonで書いたスクリプトが過去のPython環境でうごかないんですけどーって話がある場合、組み込んだPythonをむやみに上げれなくなってしまいます。

普通に上げればいいじゃん?って思う方は身の回りでOffice 2010を使ってる人がいないか思い出すとよいかと思います。

つまるところ、組み込むにしても更新が活発なPythonのどれを組み込むのか、というのはかなり難しいお話になります。
この点枯れてそうな2.7を入れるのありなのでは?ってなりますが、サポート切れの言語をMSが組み込むのかなり評判悪そうというところ。

そのため、VBAみたいに言語仕様が変わらないのはある意味ではメリットだったりします。
さっさとOffice 365に全シフトしてほしい…

(メモ):ふと思ったのですが、Office Addins (office.jsの方。旧Apps for Office)は割とにょきにょきバージョン上げてるなと思いました。
とはいえあっちはマニフェスト定義してるしまだなんとかなるんかしら。

パッケージどうするの問題

Pythonのメリットってやはり豊富なパッケージ(? ライブラリ?)にあると思います。
こっちも普段使わないので知らないのですが、pip installは大事だとおそらく思っています。
巷でDeep learningにつよいって言われててもやはりtensorflow, caffe, chainer, scikit-learnやらのライブラリに助けられているところも大きいと思います。numpy, scipyとかもありそう。

ところで、この辺のパッケージもどう管理するのか、という話が出てきます。
たぶん生のPythonしか使えなくてうれしい!神!って人はおそらくいないと思っています。
(それ以上にDeep LearningとかData Analysisとかその辺の活用見込んでるはずなのに、その手のパッケージ一切使えません!じゃお話にならない)

さて、Pythonバージョン以上にパッケージのほうはさらに面倒です。

  • パッケージをどこに持つか
  • パッケージのバージョンをどうするか

という2つの問題が出てきます。

バージョンの話はさっきのPythonのどのバージョンの話と一緒です。バージョン互換性について一切保証されていないので、下手に組み込むわけにもいきません。
組み込まれたものしか使えません!もとてもつらみあるし。

そうなるとnuget packageよろしく、依存パッケージをインストールしようぜ!が割とよさげです。
しかしこれはこれで結構インパクトでかくて、Excelファイル開くたびにpip installが走るのウゴゴーってなります。
2MBのExcelファイル開いたら10MBのPythonパッケージ落ちてきました!とか言われるとかなりつらいという。
さらに落としてきたパッケージの管理もだるくて、毎回消してると開くたびにダウンロード走るし、全部残してるとディスク領域にゴミがというところ。

じゃあExcelファイルにパッケージ埋め込もうぜ!
なんかファイル容量一気にふえたんですけお。。。
組み込みPython問題が…。

書きながら考えてたら妥当なのが毎回ダウンロード走らすだなって思いました。
オフラインで使えないのは妥協。でも絶対ユースケースにある。(何よりもプロキシブロックとかされそう)

というわけでパッケージもちょいちょいめんどいなーというところ。

VBAExcelだけじゃないんですよ

個人的に上のはどうにかしようと思えばなる類かなぁと思っています。

ところでPythonのっける話って実はExcelとしか言われてないんですよ。
最近生きてるのか知らないAccessとか、地味にVBA使われてそうなOutlook、実は載ってるWord、PowerPoint、Projectなどもいるわけです。

VBA置き換えとなると当然これらの製品にも載るわけですが、他の製品だとCOM触れればよくねっていう感じがあるんですよ。
つまり他の製品のVBAを変えるのにPythonである必要性がないというところ。

データ分析とかの面でExcelPythonの相性がいいのは自明なんですが、PowerPointとかWordと相性いいか?といわれるとはて…となります。
その段階で他のあらゆる言語を押しのけてPythonというのはかなりよくわからない回答だなとなります。
最近はほぼWindows .NET 4,6とか載ってるのでC#いいじゃん!とかVB.NETいいじゃんとかその辺を押しのける理由があんまりないなーと。

ExcelだけPythonにして~とかだと結局VBAも保守せざるを得ないんで、それはExcelに載せない理由がなくなり死なないという流れ。
というか切り替えるときにもこれ起こって不滅なのでは…?っていう感想です。
Office Addinsも言うほど流行ってないし…
(Officeのバージョンの問題な気もする。やはり早くOffice 365に全しh)

(メモ):全く関係ないですが、Office 2019の製品にAccessとPublisherとOneNoteが載ってないオーラなんですよね。
Changes to Office and Windows servicing and support – Windows for IT Pros
これも実際出ないとわからないですが、AccessとPublisherは消滅する可能性ありそう。
OneNoteは無償化なりで販売しなくていいやという流れになってそうですが、ここ数年アップデートされてないAccessとPublisherはうーーーんという気持ち。
個人用途でAccessそもそも高いのと、商用だとSQL Database方面使おうって話で頻度低そうだし、Publisherはどの程度使われてたんだろ感なので消える可能性は十分あるかなーって感じです。

Office 2019自体もLTSB的なパッケージに対する累積アップデート状態であまり面白みがないのがぐぬみ。

VBAよりもPower Queryのほうが死にそう

というわけでVBAが生き残る理由を書いていたのですが、こうなるとだいぶ載り方が決まってきます。
Power QueryよろしくPython Editorが載るという感じか、PythonのパッケージでExcel使えるようにするとか。後者は既にある気がする。

Python Editorが載ると当然役目が大体おんなじというか下位互換味があるPower Queryちゃん存続の危機となります。
データソースへのアクセス的なところで役割分担を果たしてほしい。。。

(ちなみにPython Editorは上の問題どうするの?って話については、ファイルに紐づかないPythonだからバージョン固定じゃないし、使う機会限られるから毎回ダウンロードでいいし、Excelにしか乗せなくても問題ないという感じで丸く収まります)


という感じでなんかいまいちまとまりませんでしたが、VBAは死なんよ!何度でも生き続けるさ!という話でした。
えっ? ここまで書いてPythonにやられたらどうするのって? 1年間毎日Python for Excelの話書きます。。。

今年もゆるっとブログ書きたい…。

この辺で