- PR -

VB.NET から EXCELオブジェクトの操作

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

Jittaさんの書き込み (2006-03-15 21:12) より:

プログラムからエクセルプロセスは解放されているが、終了はしていないような気がする?
# と、指摘されたような気がする


意味が良くわかりませんが、COM の参照のみ解放していること自体は何ら問題ないですよ。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-03-15 21:26
Quit していないから、プロセスは残る、、、んじゃないかと。

# チャット状態(笑)

[ メッセージ編集済み 編集者: Jitta 編集日時 2006-03-15 21:31 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-15 21:28
引用:

Jittaさんの書き込み (2006-03-15 21:26) より:

Quit していないから、プロセスは残る、、、んじゃないかと。


そうですね。
結果を確認させたいから残しています。(閉じられちゃ確認できない)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-15 21:47
引用:

COM の参照のみ解放していること自体は何ら問題ないですよ。
     :
結果を確認させたいから残しています。


これだけの説明じゃ意味不明ですよね... ということで補足します。(; ̄- ̄)

[x 閉じる] ボタンから Excel を終了させようとした場合に、
問題なくプロセスを解放できる状態にまでしてあるということです。

実際に試してみればわかりますが、COM オブジェクトの参照を解放していない場合、
[x 閉じる] ボタンから Excel を終了させようとしてもプロセスは居残り続けます。

これは COM オブジェクトの参照が残ったままになっているからです。
そういう意味では、起動元のプロセスが解放されれば、Excel のプロセスも解放されることが期待できます。
しかし、それは正常終了した場合のみであり、異常終了の場合は解放されません。

起動して "何か" をして、
 「はい、ユーザーさん、続きはどうぞ」
という場合には、ああいう実装をするわけです。

VSTO を使いましょうって感じですけどね。(;^-^)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
あるけみすと
会議室デビュー日: 2006/03/14
投稿数: 7
お住まい・勤務地: 兵庫県神戸市
投稿日時: 2006-03-16 00:16
引用:


起動して "何か" をして、
 「はい、ユーザーさん、続きはどうぞ」
という場合には、ああいう実装をするわけです。

VSTO を使いましょうって感じですけどね。(;^-^)




じゃんぬさん、Jittaさん 本当にありがとうございます。
運用面からは、グラフを書いてプレビューしてユーザーさんが閉じれば
終了ですので、じゃんぬさんのおっしゃる方に近いですね。

別作業をしている間に気に掛けていただきありがとうございます。
じゃんぬさんのコードを参考にしてみましたが、結果は×でした。

Shape.Select() のところで落ちてしまいます。
OfficeやVB.NETのバージョンのせいなのでしょうか・・・

もう少し探ってみます。


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

あるけみすとさんの書き込み (2006-03-16 00:16) より:

じゃんぬさんのコードを参考にしてみましたが、結果は×でした。
Shape.Select() のところで落ちてしまいます。
OfficeやVB.NETのバージョンのせいなのでしょうか・・・


これは、xlImageShape.Select() の部分のことですよね?
この時の xlImageShape のインスタンスが正しくないだけかもしれません。
私もちょっと調べてみます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-16 09:52
引用:

あるけみすとさんの書き込み (2006-03-16 00:16) より:

Shape.Select() のところで落ちてしまいます。
OfficeやVB.NETのバージョンのせいなのでしょうか・・・


Image1 のある Sheet が Active になっていない、
またはオブジェクトが無効化になっていませんか?

どちらにしても xlImageShape.Select() の前に xlSheet1.Activate() が必要でしたね。(;^-^)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
あるけみすと
会議室デビュー日: 2006/03/14
投稿数: 7
お住まい・勤務地: 兵庫県神戸市
投稿日時: 2006-03-17 09:14
引用:

じゃんぬねっとさんの書き込み (2006-03-16 09:52) より:
Image1 のある Sheet が Active になっていない、
またはオブジェクトが無効化になっていませんか?

どちらにしても xlImageShape.Select() の前に xlSheet1.Activate() が必要でしたね。(;^-^)




じゃんぬさん、ありがとうございます。
業務が多忙でなかなか返信できず、すみません。

いまだ解決できていません。
アプリケーションからブックをオープンし、シートに OLEObject を新規に作成してい
るのですが、その作成したオブジェクトに対して Select メソッドを実行できません。
OLEObject がまずいのかと思い、Shape.Add〜 を試してみましたがダメでした。

シートに既に作成されている Shape オブジェクトに対しては、Select〜Formula を
実行することができました。

試しにアプリからオブジェクトを作成して保存したブックを開いてみたのですが、オブ
ジェクトをクリックして選択することができませんでした。

オブジェクトを作成するときって何か注意が必要なんでしょうか?
(初歩的な質問で申し訳ないのですが…)

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