【数値流体(1次元移流方程式)】ExcelからPythonコードを実行する。C++PythonFortran技術士サポートサイトお問い合わせPython【数値流体(1次元移流方程式)】ExcelからPythonコードを実行する。本記事では、Pythonで作成したコードをExcelから実行する方法を解説します。本日作成するツールはこちら↓。このようにパラメータ設定はExcelに設定しておいて、主要な計算部分はPythonにやらせています。Excelだけで動いているように見えますよね。使う側からすると計算の詳細を知らなくてもパラメータを設定するだけで計算ができるためストレス無くほしい結果を得ることができて便利ですよね。このようなツールの目的は、「設計者が使うツールとしてはExcelのみにしておき、計算実行の部分は数値計算が得意で高速な言語にしておきたい」ということです。設計者が使うGUIツール(ボタンを押すだけ):Excel、Webアプリなど数値計算:C/C++、Fortran、Pythonこのような方法の中で自分が使いやすいものを選択することができると思います。会社で使おうと思うと、Webアプリにするにも作成者の手間もかかるしサーバーをどうしようかなどあったり、数値計算のコードもできるだけ自分が得意な言語でやる方が良いでしょう。今回の行うケースでは、十分Pythonでも行うことができますので個人的に簡単だと思うPythonを選択しました。Pythonを使うのであれば、PythonのWebアプリフレームワークとしては、Django、Flask、Bottleなどがありますし、PythonのGUI構築・操作するための標準ライブラリであるTkinterもありますね。いずれにしても、作成者の学習コストはじゃっかんかかります。使う側からするとExcelから計算実行させて、Excelで計算結果をまとめたいという気持ちもあるかと思います。いったExcel大好きって人の気持ちになって今回はExcelベースで動くツールを作成しました。数値計算の題材としては以下の記事のPythonコードを使います。Pythonコードの記事はこちら【第6回Python流体の数値計算】1次元移流方程式のクーラン条件を確認!数値的安定性(差分法)数値流体のPythonコードをExcelから実行するということをやります。カマキリPythonコードの部分はあくまで例題として「数値流体」を選びましたが、使用するときは自身が行いたい数値計算に置き換えてください。本記事の内容は以下となっています。64bit)Excel2016※WSL(Ubuntu)でのPythonを使って今回の内容を行おうとしましたが、「xlwings」のインストールで以下のようなエラーが出ます。githubのソースコードを読みに行くと、「WindowsかMacではないと・・・」という感じで書かれているため、Ubuntuではダメなのかなと思い、今回はWindowsのPythonを使うことにします。※既にWindowsにPythonがインストールされていることを想定しています。notebook(lab)を使ってPythonコードを完成させる)まず、計算をさせる対象を示しておきます。x}=0\tag{1}\end{align*}(1)式の離散化は以下のようになります。x\)と\(c\)で決まるものとしておきます。この\(\alpha\)の大きさによって、数値計算の結果が大きく変わるので、ツールができたら遊んでみてください。(2)をPythonコードで書いてみましょう。notebook(lab)でコードを書いていきます。Excelファイル「param.xlsm」からパラメータを読み込むため、pandasの使い方もここで確認しておきます。Pythonコード以上が、できたらひとつのPythonファイルにまとめておきます。writer='pillow')plt.show()ちゃんと計算が実行できるか確かめます。コマンドプロンプトを立ち上げてコードを実行しています。条件によっては動画のように、解が振動してしまいます。エラー無く計算が実行できていることが確認出来たら、これをExcelから実行できるようにします。ExcelからPythonを実行する(テスト)ExcelからPythonを実行する方法を確認します。必要なライブラリをインストールまず、することが2つあります。コマンドプロンプトで以下をインストールします。xlwings:xlwingsのインストールこんな感じでインストールしていけばOKです。僕は既にインストールしているので、「・・・already・・・」と書かれています。Basic」をクリックしてVBEを起動します。「xlwings.bas」はPythonがインストールされている環境によるので、自身の環境に合わせてファイルを探してみてください。僕は「C:\Users\Owner\AppData\Local\Programs\Python\Python37\Lib\site-packages\xlwings」にありました。String)」でPythonが実行するコードが書かれています。仕組み的には「RunPython」というFunctionをcallで呼び出せば良いということがわかります。ExcelのVBEでRunPythonを呼び出す次に、ExcelのVBEに以下を記述します。Subこれで、RunPythonというFunctionが呼び出されて、excel_test(excel_test.py)をimportexcel_test.pyの中のcopy_add_text()関数を実行するというのを行います。テスト計算として「param.xlsm」と同じフォルダに「excel_test.py」を用意します。中身は以下のようにして、テスト計算をしてみます。ボタンを設定しておくと、「計算実行」ボタンを押すだけでマクロが動いてくれるようにしておきます。「E2」セルに今どのパスになっているのかを確認しています。「param.xlsm」の絶対パスになっていると思ったら全然違うパスになっていますよね。ディレクトを移るため以下のように書いて出力してみますこれで「param.xlsm」があるフォルダのパスになりました。「param.xlsm」で設定したパラメータが読み込めるか「E10」セルに値を出力してみます。パラメータが読めているのが確認できますね。「param.xlsm」に設定しておいた数値を読み込んで、1次元移流方程式を解くPythonコードを実行してみましょう。all():」に入れただけですね。writer='pillow')plt.show()そして、ExcelVBAコードは以下のようにしておきます。SubExcel_import_1D_Fluid_test(Excel_import_1D_Fluid_test.py)をimportExcel_import_1D_Fluid_test.pyの中のall()関数を実行するこれによって、以下のようにパラメータを変えると計算結果も変わってくれます。今回は「alpha」の値を変更させた結果を示しています。※Pythonは現在のExcelの状態を読みに行くため、パラメータの数値を変更すると毎回保存しなおさないとパラメータ変更が反映されません。このあたりは、「計算実行」ボタンを押すと、PythonでExcelの自動保存をさせるか、VBAのコードでExcelの保存をさせるか色々方法があると思います。今回は、手動で保存しています。まとめExcelからPythonコード(1次元移流方程式)を実行させる手順を解説しました。目的は、Excelでパラメータを変更して計算は別の言語にやらせるということです。いった方法を使えば、Excelをメインにしながら、計算部分は作成者の得意な言語を使って高速に結果を取得することができます。※もちろんExcelVBAを使っても同じことができますが、数値計算には不向きでコードも面倒ですし計算も遅いですね。notebook(lab)をWordpressに埋め込む方法を探していたら、簡単な方法を見つけました。Githubアカウントにログインした状態で、以下の「Gist」に行って「*.ipynb」をアップロードします。kamakiri宇宙に入ったカマキリPythonPython(gspred)でスプレッドシートを操作する。し」と「値渡し」の違いを理解する。kamakiri宇宙に入ったカマキリPython【第8.1回Python流体の数値計算】バーガース方程式を差分法で実装する。kamakiri宇宙に入ったカマキリPython【第1回Python流体の数値計算】目標と環境構築。kamakiri宇宙に入ったカマキリPython【第14回Python流体の数値計算】2次元ラプラス方程式をPythonで実装する。コメントをキャンセルメールアドレスが公開されることはありません。付いている欄は必須項目です【Python初心者】辞書型を学ぼう!【Python初心者】タプル型を学ぼう!製造業コミュニティ製造業コミュニティは製造業で働く方や製造業へ就職を考えている学生の方が匿名で気軽に情報交換を出来るオンラインコミュニティです。本が聴けるアプリAudible(オーディブル)☟30日間の無料体験(最初の1冊は無料)プロフィールカマキリ(^^)大学の専攻は物性理論で、Fortranを使って数値計算をしていました。CAEを用いた流体解析は興味がありOpenFOAMを使って勉強しています。CAE解析(流体解析)notenoteで内容は主に「プログラミング言語」の勉強の進捗を書いています。「現在勉強中の内容」「日々思ったこと」も日記代わりに書き記しています。1DCAEの操作方法などを動画にしています。(音声はありません_(._.)_)製造業コミュニティをやっています。Facebookを使った実名登録。製造業ブロガーコミニティ案内オンライン家庭教師のご要望あればご連絡ください。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ています。・当メディアはGoogleによるユーザーに合わせた自動広告が表示されます。Twitterカマキリ☟こちら日々の「思ったこと」「勉強している内容」を発信しています。4Pythonを使ってTwitterAPIで自作botを作りました。製造業コミュニティの方々と運営しています。botを作るのかを知りたい方はこちら。【超丁寧に解説】Pythonを使ってTwitterAPIでGoogleスプレッドシートに書いた内容を画像付きでツイート投稿する。HOMEPython【数値流体(1次元移流方程式)】ExcelからPythonコードを実行する。宇宙に入ったカマキリ。