データソースとしてのExcel?

私はいくつかの財務計算のために90年代に書かれたいくつかの優れたシートで大きな課題に直面しています。基本的に約100種類の異なるExcelシート(構造、内容、数式、マクロなどが異なる)があり、これを1つのアプリケーションに統合する必要があるため、すべてのExcelを廃止する必要があります。

Excelシートの機能のいくつか:

  • すべてのExcelシートには、数式とマクロが関連付けられた定義済みのシートがいくつかあります。マクロはVBAで書かれており、XLLの形式で拡張されたアドインを使用しています。

  • すべてのExcelシートには、ユーザ入力データと機器の価格を計算するための定義済みシートに依存するユーザ定義ワークシートもあります。最も重要なことは、ユーザがユーザ作成シートにデータを入力することです。事前定義されたシートはこれに基づいて何かを計算し、結果はユーザー定義のシートで再度参照されます。

我々は、以下のようにこれを解体するための様々なアプローチを考えていた。

  • Sharepoint 2010でExcel Servicesを使用し、ExcelシートをWebサービスとして公開し、ユーザー定義パーツを実行するクライアントアプリケーションを作成し、結果のExcelサービスと通信します(また、 Excelサービスでホストされている定義済みのシートに書き込む)

  • Excelのオートメーションを使用する(??)

私の質問は、これらの優れたものを廃止するためにここで最も実現可能なアプローチは何ですか?私がしなければならないのは、セルを上手く書くために、式/マクロを実行して結果を計算し、全体のエクセルを再作成しないように非常に熱心です。すなわち、数式/アドインを作成し直して作成するのではなく、それらを統合することです。

どんなアドバイスも大歓迎です!!!

乾杯、 -マイク

0
@ポール:どうすればいいの? VBAコードとしてExcelシートに入ったコードはたくさんありますが、それらを何かに変換して使用する簡単な方法はありますか?
追加された 著者 Mike,
しかし、VBAの機能はサーバー上で実行されませんので、最初にこれらの関数をすべて変換する必要があります。私の意見では、Excel Servicesの採用のアキレス腱が採用されました。
追加された 著者 Paul Leigh,
いいえ、Excel ServicesではREST APIが使用されるため、Excel Servicesを使用する場合は手動で関数を再作成する必要があります。これは、数百万のスプレッドシートを使用している(そして私は冗談を言っていない)金融機関のための大規模な採用障壁です。
追加された 著者 Paul Leigh,
Excel Services on Sharepointは、最も「キャリアフレンドリーな」アプローチになります。この経験を持つプログラマーにとっては、多くの作業があります。
追加された 著者 jfrankcarr,

2 答え

私はSharepointに精通していないので、比較することはできませんが、Excelの自動化では、シートを開き、そこにいくつかの値を入力して結果を読み取ることは本当に可能です。あたかも誰かが画面上でExcelを開き、その中で何かを行うかのように視覚的に行うことさえできます。あなたの古いシートに互換性があるなら、私は現代の.Net言語を使用します。

1
追加された
私はあなたが完全に隠されたExcelを開いて、ユーザーがまったく新しいソフトウェアとやりとりできると思っていました。ユーザーがExcelとやりとりすることを希望する場合は、彼が隠しているシートを開くことができるのではないかと思います(もし彼が知っていれば)。
追加された 著者 Dims,
Excelを起動してその要素にアクセスするために使用する言語は何ですか?オートメーションを注文して、すべてを保存したり、変更を破棄したりすることができます。
追加された 著者 Dims,
方法の説明は次のとおりです。 msdn。 microsoft.com/en-us/library/…
追加された 著者 Dims,
以下は、C#からExcelにアクセスする方法の概略です: csharp.net- informations.com/excel/csharp-read-excel.htm
追加された 著者 Dims,
つまり、Excelシートはユーザーから完全に隠されていて、作成したシート/ビジュアルでのみ再生できる必要があります。オートメーションのアプローチでは、あらかじめ定義されたシートを隠しておき、値を書き込んだり、数式/マクロで何かを計算させたり、それを読み取ったりすることができますか?
追加された 著者 Mike,
どのように私は完全にユーザーから隠されたExcelを維持することができますが、それを変更し、それを更新し、そこから値を読み取る?私は自動化を試みましたが、あなたは儀式を行うたびに節約を促すことができましたか、まったく何かを逃しましたか?
追加された 著者 Mike,

特定のテクノロジを無視すると、3つの基本的なオプションがありますが、組み合わせは可能です。

  1. 既存のExcelワークブックをバックグラウンドで保存し、新しいフロントエンドを提供します。
  2. VBAを新しいツールに移行します。
  3. あなたのユーザー、今日と明日に必要な機能を特定して実装します。

オプション1があなたに最も安くて迅速な統合を提供しなかったなら、私は驚くでしょう。欠点は、それらの古いExcelワークブックに依存し続けることです。それらは、以前のバージョンのExcelに基づいているのですか、または移行されていますか?そうでない場合は、最新のハードウェアとオペレーティングシステムで動作しますか?明日のハードウェアとオペレーティングシステムで動作しますか?マイクロソフトは下位互換性を維持するために莫大な努力をしていますが、100%下位互換性を達成しているわけではありません。

オプション2は実現可能か?各ワークブックの内容を知っていますか? VBAは新しいツールに移行/変換できますが、アドインはどうですか?ソースはありますか?あなたはドキュメントを持っていますか?ドキュメントに頼ることの問題は、バグの一部が人々が使用する文書化されていない機能になることです。

オプション3を使用すると、何かをもたらすことを心配する必要はありません。あなたは今日と明日のために適切なツールを選び、それを使って必要な機能を実装します。あなたは少し注意する必要があります。施設Xが必要かどうかをユーザーに尋ねると、関係なく、「はい」と表示されます。質問する質問は、あなたはどのように施設​​Xを使用していますか?

これらのオプションにはそれぞれリスクがありますか?リスクにアクセスするための情報はありますか?これらのオプションのそれぞれに関連する仕事とリスクを定量化できますか?できるときだけ、アプローチを選択してから技術を選択できるようになります。

1
追加された
ネイティブExcelは、直接的なユーザーコントロールのために設計されています。多くのVBAはユーザーエクスペリエンスを向上させるために書かれており、ユーザーが質問に回答することを前提としています。しかし、VBAはそのように書かれる必要はありません。たとえば、そうしないと指示がない限り、 Workbook.Close は、ワークブックを保存するかどうかをユーザーに尋ねます。しかし、VBAはワークブックを閉じる前に保存することができます。または Workbook.Close には「保存しない」または「確認せずに保存する」というパラメータがあります。これには、VBAを更新して、Excelがユーザーの質問をする状況を取り除く必要があります。 次のコメントに続きます。
追加された 著者 Tony Dallimore,
代替手段は、質問を傍受して自分自身に答えるか、Excel以外の方法でユーザーに尋ねるフロントエンドです。あなたはこれらのアプローチの中から選択するのに十分に知っていますか?私が不公平になることを願っていますが、問題のスコープとサイジングを行う前に、アプローチと技術​​を選択したいという印象があります。
追加された 著者 Tony Dallimore,
ありがとうTony。私はオプション1を考えていましたが、ここで問題は、Excelはバックグラウンドではできない1つのツールであり、ユーザーが新しいインターフェイスで操作できるようにすることです。あなたがExcelに変更を加えるたびに、保存アクションを促すメッセージが表示されます。または、何かが欠落しています。ワークブックをバックグラウンドで保存して、ユーザーに完全に新しいビジュアルを再生させ、ワークブックを秀で、そこから価値を読み取ることができますか?
追加された 著者 Mike,