1
0

More than 3 years have passed since last update.

unsafeなコードや脆弱性の高いソフトウェアが書きずらく拡張性が高くきれいに書けるxlwings

Last updated at Posted at 2020-03-06

MS Office(Excel)で危険なコードを書いたことはありませんか?

回答->この様なときは、Pythonを使いましょう
理由は以下のようなコードを書けないからです。

Dim A As Variant
Dim B As Variant
A = 1
B = '1'
Private Function C As Variant 
    C=A+B
End Function

何故か2が出てきますが、このコードはよくバグを作り出します。Pythonならエラーにしてくれます。
もし、Pythonで2または、'11'を出したいときは、

excels.py
A = 1
B = '1'
def C_Int():#2
    return A+int(B)

def C_Str():#'11'
    return str(A)+B

の様に書かないとなりません、明示的に書くことがバグの温床を打ち止めできるので、非常に良いことです。
また、マクロでとてもあるあるの話だと思いますが、外注していたら見ずらくインシデントを下げてなく機能が追加しずらいといったことがあります。

代入バグもストップ

Dim A As Variant
Dim B As Variant
B = 2
A = B = 3

この時B = 3の計算結果をAに入れてしまうバグが起こりますPythonなら未然に防止できます。

excels.py
B = 2
A = B = 3

もしB = 3の計算結果が欲しい場合B = 3の部分をB == 3にすればよいだけです。この仕組みは簡単にバグを減らすことができます。

Pythonなら出来ることが豊富

PythonならVBAと違って自動化以外に、機械学習、GUIデスクトップアプリケーション、Webアプリケーション、CUIアプリケーション、アニメーションPNGの操作、画像処理、3DCG他多様な事ができます。それどころか、PythonはC#以上にできる分野が多いです(C#はLinuxの操作が苦手だったりする)。唯一難しいと言われているのは組み込み分野ですが、その分野はC++くらいしか活躍ができない厳しい分野なので、実質パソコン(Win,Mac,Linux)で出来る事なら何でもできます。それに対し、VBAは自動化以外は何もできないので、複雑な自動化や他分野まで含む自動化をしようとすると忽ち出来なくなります。何千行以上に及ぶ自動化にはPythonの使用をオススメします。

PythonはOSS

PythonはOSSなので、問題があれば改善されます。それに対し、VBAは30年近く放置されており、従って、マクロウイルス等の脆弱性の原因になることが多いです。セキュリティを気にしている貴方。今すぐPythonに乗り換えることをオススメします。また、人気言語なので、コードエディタも揃っております生産性向上も行えます。なおVBAは糞過ぎるコードエディタしかありません。
インストール方法はこちら→https://qiita.com/yniji/items/b38bc312e860027108ac

なおソフトをかえることで生産性と安全性の向上ができます。

名前 markdown文書 Google スプレッドシート等(JSマクロ6分以内) MSOffice(Excel)+Python
サイズ ごく小さいとき デフォルトで使用 6分以上の巨大な自動化が必要なとき

この様な役割分担を与えておくのもよいだろう。6分以上の自動化には何やら他分野も含んでいる確率が高いので、Pythonを使うこと自体非常に合理的である。

1
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0