@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ASP.NETからExcelにコンボボックスを表示

1
投稿者投稿内容
もっち
会議室デビュー日: 2008/05/14
投稿数: 4
投稿日時: 2008-05-14 14:22
はじめまして。
ASP.NETでスプレッドからExcelに出力しスプレッドで作成したコンボボックスをエクセルでも使用できるように考えていましたが、

引用:

Excelのセルには、コンボボックスから選択された値、またはデフォルトの項目が入力されます。SpreadのオブジェクトはExcelにエクスポートされません。



spreadのhelpに上記のように書いてありましたので、
spreadからExcelへ保存しそのExcelを読み込んでコンボボックスを作成できないかと思い作成しています。

下記コードのデータ入力処理の辺りを変更してコンボボックスを作成できるのではないかと思いましたが、うまくいきません。
何かよい方法がございましたら、ご教授お願いします。

コード:
        '==================  起動時の処理  ===================  
        Dim xlApp As New Excel.Application
        Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
        '既存のファイルを開く場合
        Dim xlFilePath As String = "C:\\TEST1.xls"
        'Dim xlFilePath As String = fname
        Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath)
        Dim xlSheets As Excel.Sheets = xlBook.Worksheets
        Dim xlSheet As Excel.Worksheet = xlSheets.Item(1)
        xlApp.Visible = True        'Excelを表示(必ずとも表示しなくてもよい)

        '==================  データの入力処理  ==================  
        Dim xlRange As Excel.Range
        Dim strDat(1, 0) As Object
        xlRange = xlSheet.Range("A1:A2")    'データの入力セル範囲
        strDat(0, 0) = "12"                 'データの作成
        strDat(1, 0) = "23"
        xlRange.Value = strDat              'セルへデータの入力

        MRComObject(xlRange)              'xlRange の解放
        '==================  ファイルの保存処理  ==================  
        xlApp.DisplayAlerts = True     '保存時の問合せのダイアログを非表示に設定
        xlSheet.SaveAs(xlFilePath)      'ファイルに保存
        xlApp.DisplayAlerts = True      '元に戻す

        '==================  終了処理  =====================  
        MRComObject(xlSheet)            'xlSheet の解放
        MRComObject(xlSheets)           'xlSheets の解放
        xlBook.Close(False)             'xlBook を閉じる
        MRComObject(xlBook)             'xlBook の解放
        MRComObject(xlBooks)            'xlBooks の解放
        xlApp.Quit()                    'Excelを閉じる 
        MRComObject(xlApp)              'xlApp を解放


じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-05-14 15:45
引用:

もっちさんの書き込み (2008-05-14 14:22) より:

spreadのhelpに上記のように書いてありましたので、
spreadからExcelへ保存しそのExcelを読み込んでコンボボックスを作成できないかと思い作成しています。

下記コードのデータ入力処理の辺りを変更してコンボボックスを作成できるのではないかと思いましたが、うまくいきません。


まず SPREAD の ComboBox に含まれるデータをどう Excel の Workbook に保存したいのでしょうか? これがなければ元も子もありません。

それさえあれば (一例ですが) Workbook 側の Excel.Range に xlValidateCustom を追加することで ComboBox のような表現ができると思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
もっち
会議室デビュー日: 2008/05/14
投稿数: 4
投稿日時: 2008-05-14 17:06
返信ありがとうございます。
分かりにくくて申し訳ありません。

http://art1.photozou.jp/pub/886/184886/photo/9283988.jpg

上記にExcelで作成したイメージを貼り付けました。

上記のように、Spreadに含まれるComboBoxをComboBoxごとExcelに表示したいです。
コンボの中身はマスタから取得し、Excelに出力後もExcelで操作可能なようにしたいです。

一度、xlValidateCustomを調べてみます。
もっち
会議室デビュー日: 2008/05/14
投稿数: 4
投稿日時: 2008-05-15 14:10
いろいろ調べてみましたが、VSTOを使えば実現可能かと思われます。

VSTOをいままで使ったことがなく、あまり使い方がわからないので、

VSTOを使用したWebサンプル等があれば教えていただけませんでしょうか。

よろしくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-05-15 19:21
引用:

もっちさんの書き込み (2008-05-15 14:10) より:

いろいろ調べてみましたが、VSTOを使えば実現可能かと思われます。
VSTOをいままで使ったことがなく、あまり使い方がわからないので、
VSTOを使用したWebサンプル等があれば教えていただけませんでしょうか。


別に VSTO でなくともデータさえあれば実現は可能だと思います。 VSTO は未だに情報が少ないので適切なサンプルは紹介できませんが、基本モデル部分は Excel Object Library と大差ないので苦労は変わらないかもしれません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
もっち
会議室デビュー日: 2008/05/14
投稿数: 4
投稿日時: 2008-05-16 11:17
じゃんぬねっとさん返信ありがとうございます。

VSTOは使用せずに入力規則のxlValidateListを使用して
問題は解決できました。

いろいろとありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)