[リストへもどる]
一括表示

投稿時間:2002/09/27(Fri) 10:28
投稿者名:ウルトラ初心者
Eメール:
URL :
タイトル:
EXCEL操作中に「他のアプリケーションが・・・」が
VBでEXCEL操作中に「他のアプリケーションがサーバを・・・」のメッセージが
が出て困ってます。
VBのフォームでEXCELのデータを検索(find)した結果を表示するだけなんですが、
当方の環境は、Windows2000、VB5.0+EXCEL2000です。
メッセージの詳細は「他のアプリケーションがサーバを使用しているため、この操作を完了できません。
操作を続けるには、「切り替え」ボタンを選択して、他のアプリケーションを
終了させて下さい。[切り替え]  [再試行]  [キャンセル]」です。

   App.OleServerBusyRaiseError = True
   App.OleRequestPendingTimeout = 600000  
ってのはエラーは出なくりますが、当然ながら、リアルタイムな処理はできず
当方の処理では使いたくはありません。何かご存知の方、教えてください。
よろしくお願いします。

投稿時間:2002/09/27(Fri) 17:18
投稿者名:A221
Eメール:
URL :
タイトル:
Re: EXCEL操作中に「他のアプリケーションが・・・」が
> VBでEXCEL操作中に「他のアプリケーションがサーバを・・・」のメッセージが
> が出て困ってます。

普通、VB単独で使用すれば発生しないものですので、

1.初回実行時から出ていますか?
(デバッグ環境で終了時にEXCELのオブジェクトを開放していますか?)
2.プログラム中で暗黙的なオブジェクトの操作を繰り返していませんか?
3.エクセルが勝手に起動する常駐はないですか?

> VBのフォームでEXCELのデータを検索(find)した結果を表示するだけなんですが、
> 当方の環境は、Windows2000、VB5.0+EXCEL2000です。
> メッセージの詳細は「他のアプリケーションがサーバを使用しているため、この操作を完了できません。
> 操作を続けるには、「切り替え」ボタンを選択して、他のアプリケーションを
> 終了させて下さい。[切り替え]  [再試行]  [キャンセル]」です。
>
>    App.OleServerBusyRaiseError = True
>    App.OleRequestPendingTimeout = 600000  
> ってのはエラーは出なくりますが、当然ながら、リアルタイムな処理はできず
> 当方の処理では使いたくはありません。何かご存知の方、教えてください。
> よろしくお願いします。

ちなみに、「待ち」を入れたら動作するのですか?

投稿時間:2002/09/29(Sun) 05:02
投稿者名:ウルトラ初心者
Eメール:
URL :
タイトル:
Re^2: EXCEL操作中に「他のアプリケーションが・・・」が
早速のレス、ありがとうございます。遅くなりましたが、

> 1.初回実行時から出ていますか?
> (デバッグ環境で終了時にEXCELのオブジェクトを開放していますか?)
> 2.プログラム中で暗黙的なオブジェクトの操作を繰り返していませんか?
> 3.エクセルが勝手に起動する常駐はないですか?
> ちなみに、「待ち」を入れたら動作するのですか?

1、3は、タスクマネジャーからですが、確認して、ないと思います。
「待ち」を入れたら、動作します。当然、待たされます。

2があやしいのですが、メッセージが発生していると思われる
個所がわかりました。以下のコードの***の行です。

With WS_ABC.UsedRange
    Set c = .Find(List_DEF.Text, LookIn:=-4163)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            (省略)
            Set c = .FindNext(c)   ***
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

もともとのEXCELVBAのほとんどそのままで、これが
「暗黙的なオブジェクトの操作を繰り返して」いるところなのでしょうか。
いろいろと書き直しているのですが、まだうまくいきません。

投稿時間:2002/09/29(Sun) 20:16
投稿者名:A221
Eメール:
URL :
タイトル:
Re^3: EXCEL操作中に「他のアプリケーションが・・・」が
> With WS_ABC.UsedRange
>     Set c = .Find(List_DEF.Text, LookIn:=-4163)
>     If Not c Is Nothing Then
>         firstAddress = c.Address
>         Do
>             (省略)
>             Set c = .FindNext(c)   ***
>         Loop While Not c Is Nothing And c.Address <> firstAddress
>     End If
> End With
> もともとのEXCELVBAのほとんどそのままで、これが
> 「暗黙的なオブジェクトの操作を繰り返して」いるところなのでしょうか。
> いろいろと書き直しているのですが、まだうまくいきません。

はじめのWithで宣言している部分はもしや

Set WS_ABC=Application.Sheets("xx")

と、VBAの引用ではありませんか?

こちらの管理人、花ちゃんさんのホームページの「Excel・Word関連」から
「VBからExcel及びWordを操作する時の注意事項」を読んでみて下さい。
ためになりますよ。(^^)

投稿時間:2002/10/11(Fri) 15:45
投稿者名:ウルトラ初心者
Eメール:
URL :
タイトル:
Re^4: EXCEL操作中に「他のアプリケーションが・・・」が
たいへん遅くなって申し訳ありません。教えていただいたところはすでに
よんでおり、と言うか、先のソースはそこらへんを適当に
コピーし、かつ、もとのexcelvbaのソースをコピーし作ったものでして...
とりあえず、Findされるほうの形式に着目して(?)、直してしまいました。
ご意見、どうもありがとうございました。熟読して、よく理解したいと思います。