- - PR -
C# Excelの列を削除するには
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-19 21:25
初心者です。
C#でExcelの列の削除をしたくて、Webのあちこちを探し、以下の方法でと思ったのですが、エラーになります。 ws.get_Range("1:1", Type.Missing.Value).Delete(); 「エラー:objectにValueの定義がありません」となります。 また、 using Excel = Microsoft.Office.Interop.Excel;を記述すると、上記のエラーはなくなりますが、 「エラー:Interopは名前空間Microsoft.Officeに存在しません」となります。 何を定義すればいいのか分りません。ご教授お願いします。 | ||||||||
|
投稿日時: 2007-02-19 22:26
列を削除するには、Excel.Column から Delete メソッドを呼び出します。
コンパイル エラーがなくなっているわけではありません。 それ以前の段階でコケているため、違うコンパイル エラーになっているだけです。 (参照できていない段階ですから...) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-02-20 22:27
じゃんぬねっと様、ありがとうございます。
わたくし、初心者(素人)なので、よくわからないのですが、Excel.ColumのExcelは、 オブジェクトという事なのでしょうか。Excel.Columを使っていろいろ試行錯誤したの ですが、どうもうまくいきませんでした。それで、以下のように記述するとそれなり に動きました。多分、邪道なのでしょうね。実はそれすら分らないのです。 Excel.Range col = (Excel.Range)ws.Columns; col = (Excel.Range)ws.Columns[19, Type.Missing]; col.Delete(Type.Missing); じゃんぬねっと様が書かれた「Excel.Column から Delete メソッドを呼び出す」の は、どのように記述するのか、参考例をいただけませんでしょうか。
そうなんですね。恥ずかしい限りです。 | ||||||||
|
投稿日時: 2007-02-20 23:27
やり方は間違っていません。 しかし、最初の ws.Columns の参照がデクリメントされる前に、 同じ変数 col に別のインスタンスを格納しているのはまずいですね。 ReleaseComObject メソッドのことをご存知であれば、なぜまずいのかは想像できると思いますが。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-02-21 23:23
じゃんぬねっと様 ありがとうございます。 以前より「C#,VB.NET」を拝見させていただいています。 (車の)走らせ方ばかり考えていて、止め方をあまり考えていませんでした。 勉強させていただきます。 例を見ますと、最後の参照カウントから古い方へ順にデクリメントしているようです。あるいは、使わなくなったものはその都度デクリメントするのでしょうか。 (質問の仕方が変ですかね) | ||||||||
|
投稿日時: 2007-02-21 23:35
最後に書かれた "使わなくなったものはその都度デクリメントする" が該当します。 デクリメントする前に、別の参照を変数に入れてしまったら、どうなってしまいますか? 先に格納していたオブジェクトの、デクリメントする機会はどうなりますか? このあたりの危険を犯してまで実装するよりは、素直に Excel VBA 側に処理を実装し、 それを C# から呼び出すような方法を取るのが望ましいです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-02-21 23:48
じゃんぬねっと様 ありがとうございます。 そういう事なんですね。 勉強してみます。また、よろしくお願いします。 |
1