web-dev-qa-db-ja.com

Excelマクロ実行時のPowerShellパフォーマンス

VBAが豊富なExcelファイルのセットを毎日実行しています。それらのほとんどには、MS Officeアプリケーションのクロストークが含まれていますが、サードパーティアプリケーションとMySQLも採用しています。これらのファイルを特定の順序で、特定の時刻に実行するという事実により、これらのファイルを実行して出力を制御するために、xlsmベースのスケジューラーをセットアップしました。私の「アプリケーション」が成長しているので、VBAでのリソースの使用と一般的なガベージコレクターエラーの問題に直面しています(MSからのアクティブなVBAサポートの欠如は言及されていないため、IDEおよびデバッグなど)したがって、自動化の他の方法を探しています。

私が実行しているプロセスは、サードパーティのソースとCRMとRDBMSからの典型的なETLであり、DataScience以外のユーザーとツールによるデータの統合(Excel 64および32ビットアーキテクチャをカバーする必要があります)。そのほとんどは、インポート後のデータ検証、さらなる分析前のタイプテスト、時にはpicture2data置換、ビジネスロジックのデータへの適用、Outlook通知のプッシュ、SharePointデータI/Oなどに沿って実行されます。

私の質問は、これらのVBAおよびVBスクリプトを実行しているPowerShellベースのスケジューラがメモリ使用量に関してより効果的であるか、それともVBA/VBコードと同じくらい効果的であるかどうかです。 ?

与えられたポリシーのために、優れたRまたはPythonライブラリを使用してデータを操作することはお勧めしません。そのため、MSツールを使用する必要があります。

トピックに関するアドバイス、ヒント、または緩いヒントを楽しみにしています。

4
Oskar_U

Powershellは.NETフレームワークインフラストラクチャとランタイムに基づいています。これはかなり効率的であり、私自身の経験では、以前のCOMベースのVBAインフラストラクチャよりも多くの場合、メモリ管理とCPU使用率でより効果的です。正確には、より効果的なpotentialがより多く含まれます。

とはいえ、存在しないPowerShellベースのスケジューラが現在のソリューションよりも効果的であるかどうかはわかりません。これには水晶玉が必要になるためです。古いソリューションも知らないし、新しいソリューションも知らないからです。 。非常に非効率的なプログラムを書くことは、どの言語や環境でも可能です。Powershellも例外ではありません。

さらに、スケジューラーが実際のボトルネックであると説明したようなプロセスでは、少し奇妙に見えます。通常、私はデータ処理タスクがほとんどのパフォーマンスとメモリを必要とするタスクであると予想しますが、スケジューラは他のプロセスのみを調整する比較的軽量なプログラムであるべきです。

したがって、現在のスケジューラに問題がある場合は、根本的な原因を最初に探す必要があります。これは、おそらくVBAで記述されているのではないでしょうか。

3
Doc Brown