DOBON.NET DOBON.NETプログラミング掲示板過去ログ

EXCELの処理をしていて、SELECTメソッド時に他のEXCELファイルを起動中に落ちない様にしたいのですが・・

環境/言語:[WindowsXP VB.NET Frameworkのバージョン1.1]
分類:[.NET]

お世話になります。

EXCELの処理をしていて、SELECTメソッド時に他のEXCELファイルを起動中に落ちない様にしたいのですがご存知の方ご教授下さい。


Dim xlSheet As Excel.Worksheet ' 作業するSheet

既にEXCELを起動し実行中です。
xlSheet.Cells(1,1).Select()

上記の処理が実行される時に全く別のEXCELファイルをVBの処理外で起動すると

System.Runtime.InteropServices.COMException (0x800A03EC): Range クラスの Select メソッドが失敗しました。
at Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack, Boolean IgnoreReturn)
at Microsoft.VisualBasic.CompilerServices.LateBinding.LateCall(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack)
at BTDSYS.OutputManager.OutPutData() in D:\BTDSYS\SRC\BTDSYS\Cls\ClsOutputManager.vb:line 535'

上記のエラーが出ます。
全く他のEXCELファイルが起動中か確認出来る方法は有りますでしょうか?

ご存知の方ご教授下さい。
よろしくお願い致します。
# 投稿したら、タイトルが長すぎるというエラーが出て、
# 書いた記事がリセットされた……(泣)

> EXCELの処理をしていて、SELECTメソッド時に他のEXCELファイルを起動中に落ちない様にしたいのですがご存知の方ご教授下さい。
まず、Selectメソッドを利用しなければならない理由は、何でしょうか?

もしも、「Selectionを利用するために必要だ」という事であれば、むしろ、
Selectionを使わないように修正した方が確実だと思います。そうすれば、
ユーザー操作の影響を受ける事もありませんし。

もし、RangeオブジェクトのSelectメソッドを呼び出さなければならないのであれば、
処理対象の Workbook と Worksheet を、事前に Activate/Select メソッドにて
選択状態にしておいてください。上位階層のオブジェクトを選択状態にしておかないと
Selectメソッドの呼び出しが失敗しますので。


なお、もしもユーザー操作自体を禁止する(プログラム制御のみ許可)ならば、
.Interactive = False を設定しておけば OK です。
その上で、処理完了後に True に戻しておけば、問題無いでしょう。


> 既にEXCELを起動し実行中です。
> xlSheet.Cells(1,1).Select()

これは、xlsファイル中に、VBAとして記述されたものでしょうか?
それとも、VB.NET中に記述されたコードでしょうか?

後者だとしたら、上記のような記述をしてはいけません。下記を参照してみてください。
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=11807&rev=&no=0
この投稿はマルチポストです

http://www.bcap.co.jp/hanafusa/bbs/wforum.cgi?no=1922&reno=1921&oya=1921&mode=msgview&page=0
  • 題名: 申し訳御座いませんでした。
  • 著者: こつ
  • 日時: 2005/07/28 12:12:31
  • ID: 11965
  • この記事の返信元:
    • [11889] (報告) マルチ 2005/07/21 13:09:20
  • この記事への返信:
    • (なし)
  • ツリーを表示
お詫びが遅れまして大変申し訳御座いませんでした。

早急に知りたかったので、マルチしてしまいました。
本当に申し訳御座いませんでした。

今後このような事を致しません。

DOBON.NET | プログラミング道 | プログラミング掲示板