none
VB2010にてフォーム内にExcelファイルのシートを直接表示し、編集・保存したい。 RRS feed

  • 質問

  • お世話になります。

    VB2010で作成したフォームに、Excelファイルのシートを表示してその内容を保存する方法について調べております。
    構築するアプリは、Win7で動作するデスクトップアプリで、Officeは2010がインストールされていることを想定しております。

    調査したところ、WebBrowserを利用する方法があることが分かりましたが、
    以下の問題点があるため、実用的ではなさそうです。

    1.IEでExcelを表示できるようにレジストリを変更する必要がある。
      →IEの挙動が変わってしまうのはNGです。
    2.WebBrowserに表示したExcelファイルを保存する場合には、GetObject関数を利用して、
        現在開いているExcelのプロセスにアクセスし、保存しなければならない。
      →確実に保存できるのかが心配です。

    他に、Microsoftのspreadsheetを利用する方法もあるそうなのですが、Office2010からは
    廃止されているそうなので、利用できません。

    Excelのような図形のコピー、拡大、縮小、図形間を矢印コネクタでつなぐことが
    できればよいです。

    ですので、前回の編集結果が保存できて、次にフォームを開いた際に保存されたままの
    状態が表示できればよいので、最悪Excelでなくてもよいので、サードパーティ製品等で
    お勧めのものがあれば教えていただければ助かります。
    できればExcelを利用したいのですが。

    すみませんが、よろしくお願いいたします。

    2013年6月19日 2:29

回答

  • 皆さま。ご回答ありがとうございました。
    その後の状況報告をいたします。


    今回は、SPREADのシェイプオブジェクトを利用して実現することに致しました。
    https://www.grapecity.com/japan/compchart/dotnet/spreadsheet/select/gui_design.htm

    使ってみた感覚が一番Excelに近かったことと、更にSPREADで配置した図形をActiveReportsで
    帳票にそのまま印刷できる点がメリットとしてあげられます。
    あと、会社に既にSPREADもActiveReportsもあるので、その点が一番大きいですね。

    ただ、あまりこのシェイプオブジェクトについては、GrapeCityさんの方で宣伝?
    されていない点が気になりますね。探すのに苦労しました。

    ありがとうございました。
    • 回答としてマーク T.Jyuraku 2013年6月20日 7:26
    2013年6月20日 7:26

すべての返信

  • フォーム内にExcelシートを表示するのは難しそうなのですが、本当にその必要はありますか?

    > 前回の編集結果が保存できて、次にフォームを開いた際に保存されたままの状態が表示できればよい

    のであれば、アプリケーション側としてはExcelファイルのパスだけとっておいて
    Excelファイルを開く所までアプリでやってあとはExcelにお任せではダメなんでしょうか。
    ということで、フォーム上でないとダメな理由も書かれると良いと思います。
    2013年6月19日 4:36
  • 検索しただけですが、以下のような情報がありました。

    【VB.NET】Excelを利用する
    http://blog.livedoor.jp/akf0/archives/50900633.html

    OLE on .NET Framework
    http://atata.sakura.ne.jp/net/


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2013年6月19日 4:52
    モデレータ
  • mars12さん。ご回答ありがとうございます。

    >フォーム内にExcelシートを表示するのは難しそうなのですが、本当にその必要はありますか?
    そうなんですよね。本当であればExcel開いて後はお任せでよいのですが。

    今回調査に至った経緯としまして、これまでExcelで入力していた帳票を
    システム化するというお話になったのですが、この帳票は文字を入力する部分以外に、
    ある内容の関連性を抽象化した図形で現す内容がありました。
    その図形の部分をこれまでの操作方法とあまり変更がなく、かつ効率的に
    実現できないか、という思いでフォーム内にExcelを表示して編集する方法がよいのでは、
    と考えました。

    実際にシステム化するにあたっては、Excelファイルが保存されていることは表には見せずに、
    (DBにファイルを直接保存)あたかも1つの画面として見せたいと思っております。
    2013年6月19日 4:53
  • WebBrowserコントロールで、Office Web Apps の Excel を使うのは如何ですか?
    2013年6月19日 6:45
  • > 実際にシステム化するにあたっては、Excelファイルが保存されていることは表には見せずに、(DBにファイルを直接保存)あたかも1つの画面として見せたいと思っております。

    有料ですけどこういうのはどうなんですかね。使ったことはないですけど。http://www.xlsoft.com/jp/products/SSG/index.html

    個人的な意見で的はずれかもしれませんが、Excelの帳票メインで考えるなら、
    作る部分はいままで通りにしてもらって、アップロード機能みたいなの作って
    取り込み時にシステムに必要なデータだけ抜き出してDBに登録、っていうのも考えられると思いました。
    2013年6月19日 7:07
  • trapemiyaさん。ご回答ありがとうございます。

    教えて頂いたページを確認いたしました。

    ・【VB.NET】Excelを利用する
    については、とても便利そうだったのですが、Office2007以降は非推奨?のようです。
    http://www.itmedia.co.jp/enterprise/articles/0605/10/news011.html
    Office2010に存在するか調べたのですが、どうも存在しないようです。

    ・OLE on .NET Framework
    こういった方法もあるのですね。後で動作確認してみたいと思います。

    ありがとうございます。
    2013年6月19日 7:29
  • hihijijiさん。ご回答ありがとうございます。

    >WebBrowserコントロールで、Office Web Apps の Excel を使うのは如何ですか?
    なるほど。その手があったのですね。
    後は自動でログインして、ユーザーにはOffice Web Appsを利用していることを
    感じさせないような工夫をすれば出来そうですね。

    外部にデータを保存することになることと、アプリ配布時のアカウントを
    どうするかを気を付ければなんとかなりそうですね。

    ありがとうございます。
    2013年6月19日 7:33
  • mars12さん。

    教えて頂いたSpreadsheetGearのデモ版を試して、
    Excelと同様に使えることを確認できました。

    1つ残念なのは、保存しているファイルを開くと、
    図形の矢印線が消えてしまう点がありました。残念。
    そもそも表示できないのか(互換性がないのか)、
    何らかのプロパティで表示できるのかはまだ確認できていません。

    >作る部分はいままで通りにしてもらって、アップロード機能みたいなの作って
    確かにアップロード機能でもいいかもしれませんね。
    操作方法もこれまでと変わりませんし。

    ありがとうございます。
    2013年6月19日 7:39
  • 皆さま。ご回答ありがとうございました。
    その後の状況報告をいたします。


    今回は、SPREADのシェイプオブジェクトを利用して実現することに致しました。
    https://www.grapecity.com/japan/compchart/dotnet/spreadsheet/select/gui_design.htm

    使ってみた感覚が一番Excelに近かったことと、更にSPREADで配置した図形をActiveReportsで
    帳票にそのまま印刷できる点がメリットとしてあげられます。
    あと、会社に既にSPREADもActiveReportsもあるので、その点が一番大きいですね。

    ただ、あまりこのシェイプオブジェクトについては、GrapeCityさんの方で宣伝?
    されていない点が気になりますね。探すのに苦労しました。

    ありがとうございました。
    • 回答としてマーク T.Jyuraku 2013年6月20日 7:26
    2013年6月20日 7:26