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

[ Excelへのデータ移行 ] についての質問

1
投稿者投稿内容
ZEN73
常連さん
会議室デビュー日: 2003/03/10
投稿数: 43
投稿日時: 2004-02-08 18:42
善浪と申します。

dataGridのデータをExcelに移行して印刷することを
考えておりましたところに、諸農さんのコードを拝見させていただきました。
Excelへのデータ移行を体験したくて、早速コードを打ち込んでみましたところ、
dataGridにデータをセットすることはできたのですが、
Excelへのデータ移行のところで2つのエラーがでてしまいました。

<エラー1>Missing.Value
  wkBook = wkBooks.Add(Missing.Value);
range = wkSheet.get_Range("A1", Missing.Value);
range.set_Value(Missing.Value, dataValue);

これは、Microsoft Excel 9.0 Object Libralyを参照し、using system.Reflection;
とすることで解消することが出来ました。


<エラー2>range.set_Value
  range.set_Value(Missing.Value, dataValue);

set_Valueに対して、
  'Excel.Range.Value.set' : 演算子またはアクセサを明示的に呼び出すことはでき  ません。
というメッセージがでてきます。このエラーの対処方法が全く解らなくて困っています。

このことを教えて頂けますようよろしくお願いいたします。


[ メッセージ編集済み 編集者: ZEN73 編集日時 2004-02-09 05:46 ]
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-02-09 07:02
諸農です。

私宛なのかしら(^^;

引用:

これは、Microsoft Excel 9.0 Object Libralyを参照し、using system.Reflection;
とすることで解消することが出来ました。



Excel2000ということでしょうか?

引用:

<エラー2>range.set_Value
  range.set_Value(Missing.Value, dataValue);

set_Valueに対して、
  'Excel.Range.Value.set' : 演算子またはアクセサを明示的に呼び出すことはでき  ません。
というメッセージがでてきます。このエラーの対処方法が全く解らなくて困っています。

このことを教えて頂けますようよろしくお願いいたします。



Excel9であるなら、こんな感じかも。(未検証です)

コード:
range.Value = dataValue;



以下のサイトが参考になると思います。

[HOWTO] Visual C# .Net で Excel を自動化し、
    配列による範囲内へのデータ入力および範囲内からのデータ取得を行う方法
http://support.microsoft.com/default.aspx?scid=kb;ja;302096


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
ZEN73
常連さん
会議室デビュー日: 2003/03/10
投稿数: 43
投稿日時: 2004-02-09 20:07
善浪です。諸農さんありがとうございました。
ASP.NETでのExcel利用は、いろいろ目にはするのですが、
なにせ、先週に還暦を迎えた頭では、応用もままならず…。
本当に助かりました。

  引用-------------------------------------------------
諸農です。

私宛なのかしら(^^;
-----------------------------------------------------
もちろんです。これからもよろしくお願いします。


  引用-------------------------------------------------

Excel2000ということでしょうか?
-----------------------------------------------------
そうなのです。もしや、エクセルのバージョンが合わないのかなという
思いはあったのですが、自分で調べることもせず甘えてしまいました。

   引用------------------------------------------------
Excel9であるなら、こんな感じかも。(未検証です)

コード: ---------------------------------------

range.Value = dataValue;
-----------------------------------------------
----------------------------------------------------
検証することが出来ました。
[ Excel97][ Excel2000]は、range.Value = dataValue;
[ Excel2002]以降は、   range.set_Value(Missing.Value, dataValue);
と、覚えておきます。

ここで、心配なことが出てきました。
データベース・アプリケーションを完成させたら、結構多くの人たちに配布
しようと思っているのですが、それぞれの人のExcelのVersionの違いは
乗り越えることが出来るのでしょうか?。それとも、プログラムでVersionを
調べに行かねばならいのでしょうか?。

   引用-----------------------------------------------

以下のサイトが参考になると思います。

[HOWTO] Visual C# .Net で Excel を自動化し、
     配列による範囲内へのデータ入力および範囲内からのデータ取得を行う方法
http://support.microsoft.com/default.aspx?scid=kb;ja;302096
-----------------------------------------------------------------
ご親切に、ありがとうございます。
しっかり勉強したいと思います。


[ メッセージ編集済み 編集者: ZEN73 編集日時 2004-02-09 20:09 ]
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-02-09 21:24
諸農です。

引用:

  引用-------------------------------------------------
諸農です。

私宛なのかしら(^^;
-----------------------------------------------------
もちろんです。これからもよろしくお願いします。



会議室のマナー違反ですよ、とまでは言いませんが(^_^;
名指しされるのはあまり気持ちのいいものではないです。
また、名指しされても、引用したトピックの参照先が
明示されていないと、他の方からの有益有用なコメントを
逃すことにもつながると、私は考えますので今後はご注意
された方がいいかと感じます。


引用:

ZEN73さんの書き込み (2004-02-09 20:07) より:

データベース・アプリケーションを完成させたら、結構多くの人たちに配布
しようと思っているのですが、それぞれの人のExcelのVersionの違いは
乗り越えることが出来るのでしょうか?。それとも、プログラムでVersionを
調べに行かねばならいのでしょうか?。



2種類のバージョンを用意しておいて、ユーザーに選択してもらう。。
ぐらいしか思い付かないですね。。
安直な回答で申し訳ないm(_ _)m

#仕事で週末からの連徹からようやく帰って来たものですから、
#発想が貧困になりがちです。すみません。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-09 23:51
引用:

Jubeiさんの書き込み (2004-02-09 21:24) より:

会議室のマナー違反ですよ、とまでは言いませんが(^_^;


 ところが、Windows Insiderの方は、結構名指しがあったり・・・まぁ、「気持ちのいいものではない」には同感。タイトルに名前が入ると、もっとドキドキ!



引用:

2種類のバージョンを用意しておいて、ユーザーに選択してもらう。。
ぐらいしか思い付かないですね。。


 参照するときにすでにバージョンを指定しているから無効では?私の方では、一応2002用で2000でも動いていました。DLLがコピーされているから、でしょうけど。ただ、VBAも使うときは、ファイルを2つ用意せねばなりませんでした。
#そのほか、印刷問題も・・・
1

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