3

まず、この質問は、C# と VBA の全体的なメリットについて議論することを意図したものではありません。C# に適した部分と VBA に適していると思われる部分を含むプロジェクトがあり、いくつかの異なる方法でビルドする時間がないため、開発を構成する最善の方法を見つけようとしています。どちらが速いかを見てください。ここに質問を投稿するのは、このプロジェクトにとって明らかに魅力的な選択肢になるとは考えていなかった言語が 1 つある可能性があるためです。

プロジェクト:

  1. Web サービス クエリを使用するか、このリストにリンクされている Excel シートの内容を更新して、Sharepoint リストからデータ セットを取得します。

  2. セットのフィールド間の不等式関係を使用して、Sharepoint データ セットをワークブック ファイル名の Excel データ セットに結合します。これは多対多になります。

  3. 各一致セットの各ワークブックについて、そのデータの一部を別のフォルダーの新しいワークブックにエクスポートして、各一致セットが独自のフォルダーにあるようにします。

  4. すべてのフォルダーを 1 つのアーカイブに圧縮します。

ステップ 1 は、.NET または VBA のいずれかで十分であるように思われます。手順 2 は C# に適していると思われます。結合クエリが含まれているため、多数の VBA ループを使用するよりも LINQ を使用した方が実行しやすいからです。ステップ 3 には Excel データ転送が含まれます。VBA の方が .NET Interop for Office 操作よりも高速であることに同意する多くの投稿を読んだので、VBA の方が適しています。ステップ 4 は、シェル コマンドに依存するのではなく、DotNetZip を使用できるため、C# の方が適しているようです。

ただし、C# と VBA を混在させると、単一言語のソリューションよりも保守が不便になります。そのため、どのようなアプローチをとればよいかわかりません。

4

2 に答える 2

2

あなたが言及する VBA を支持する唯一の点は、Excel と対話するときのパフォーマンスの向上です。

VBA と比較して C# から Excel を操作するオーバーヘッドは、他のタスク (データの取得、計算など) のコストと比較して無視できます。

そうでない場合は、不適切な操作を行っていることを意味します。たとえば、値を入力したり、セルの書式を 1 つずつ適用したりしています。

原則として、アプリケーションの保守担当者が C# を使用するのに十分な開発スキルを持っておらず、新しい言語を習得したくない場合にのみ、VBA を使用する必要があります

これは通常、保守担当者が基本的なマクロの作成方法しか知らない最後のクライアントであり、C# アドインに問題があった場合はまったく無力である場合に当てはまります。

于 2012-12-14T18:10:17.807 に答える
2

ご要望を拝見して…

パート 1 - Excel では、xml データの取得や Web サービス クエリの実行に問題はありません。私はExcel 2002でそのようなことをしていました。

パート 2 - データ統合が構文的に優れており、おそらく C# で最適化されていることは間違いありません。linq は非常に便利です。しかし、それはその統合が何であるかによって異なります。

パート 3 は間違いなく vba の領域であり、すべての更新などです。

パート 4 で c# でそれを行うと、cmd ウィンドウを開かないことで UI の見栄えがよくなるかもしれませんが、コードが実際に実行される頻度と非表示にするのがいかに簡単かということです。

その他の考慮事項...

レイト バインディングを行わない限り、C# アプリは Excel にバージョンが関連付けられます (参照を追加するときに Excel のバージョンが含まれているため)。新しいバージョンの Excel をデプロイした場合は、vba が「正常に機能する」可能性が最も高い C# アプリを更新する必要があります。

リソーシングにも問題はないはずです。C# 開発者がいて、開発者と自称するスキルを持っている人なら誰でも、.net 開発で参照する可能性のある主要な手続き型言語とライブラリにすぐに適応できるはずだとおっしゃいました。 C# と VB.Net のどちらでも同様です。F# で記述しているわけではありません。

マージするExcelデータセットがあるため、すべての依存関係をまとめておくことについても多くのことが言えます.

vba の最大の欠点は、誰かに渡すとコンパイルされないことです。:)

すべてのことを考慮して、この仕事に最も適したツールであるため、VBA ソリューションをお勧めします。ただし、どちらの方法でも劇的に変化する「ショーストップの問題」はありません。

于 2012-12-14T22:28:43.480 に答える