[[20121017134450]] 『マクロのエラーについて』(タカマチ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロのエラーについて』(タカマチ)

@実行時エラー‘‐2147417848(80010108)‘:
オートメーションエラーです。起動されたオブジェクトはクライアントから切断されました。

A実行時エラー‘50290‘:
アプリケーション定義またはオブジェクト定義のエラーです。

問題のある個所をそれぞれ@、Aと示しました。それぞれの対処法のご指導お願いいたします。

[エクセルのバージョン]Excel2010
[OSのバージョン]Windows Vista

以下デバッグ

Sub update()
'
' update Macro
'

Sheets("real").Select '

Dim 開始時間, 待機時間
開始時間 = TimeValue(Now)
待機時間 = Now + TimeValue("0:01:00")
Application.OnTime 待機時間, "書き込み"
End Sub

Sub 書き込み()

    Windows("MasterMulti64exp.xls").Activate ←A

      待機時間 = Now + TimeValue("0:01:00")
Application.OnTime 待機時間, "書き込み"

     Sheets("real").Select

        Range("R1").Select
    ActiveCell.FormulaR1C1 = "=NOW()"
    Range("R2").Select

    Sheets("rate").Select
    Range("A1").Select
    Selection.QueryTable.refresh BackgroundQuery:=False ←@

 Sheets("real").Select

         Range("AA14:AE81").Select
    Selection.Copy
    Range("AA13").Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
        IconFileName:=False

If Range("AM3").Value = 1 Then

    Range("BL14:BQ80").Select
    Selection.Copy
    Range("BL13").Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
        IconFileName:=False

     Range("AM2:AR2").Select
    Selection.Copy
    Range("BL80").Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
        IconFileName:=False

ElseIf Range("V4").Value = 0 Then

    Range("AY14:BC81").Select
    Selection.Copy
    Range("AY13").Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
        IconFileName:=False

     Range("AS14:AW81").Select
    Selection.Copy
    Range("AS13").Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
        IconFileName:=False

        Range("AM14:AQ81").Select
    Selection.Copy
    Range("AM13").Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
        IconFileName:=False

        Range("AG14:AK81").Select
    Selection.Copy
    Range("AG13").Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
        IconFileName:=False

ElseIf Range("V3").Value = 0 Then

    Range("AS14:AW81").Select
    Selection.Copy
    Range("AS13").Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
        IconFileName:=False

    Range("AM14:AQ81").Select
    Selection.Copy
    Range("AM13").Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
        IconFileName:=False

        Range("AG14:AK81").Select
    Selection.Copy
    Range("AG13").Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
        IconFileName:=False

   ElseIf Range("V2").Value = 0 Then
    Range("AM14:AQ81").Select
    Selection.Copy
    Range("AM13").Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
        IconFileName:=False

ElseIf Range("V1").Value = 0 Then

    Range("AG14:AK81").Select
    Selection.Copy
    Range("AG13").Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
        IconFileName:=False

    Sheets("real").Select
        Range("A1:D3").Select
    End If

     Range("A4:A6").Select

End Sub


 アップ後、半日たってもレスがつかないので気持ちはわかるけど
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=72962;id=excel
http://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=155345&rev=0
この状態は、あまり感心しないね。この「学校」や「質問箱」は、一応マルチ容認というスタンスだけど
サロンは明確に禁止されているし。

ともあれ、

 >A実行時エラー‘50290‘: アプリケーション定義またはオブジェクト定義のエラーです。

 このコード自体としては、エラーが発生するとすれば、別のエラー(インデックスがないとか)になるはず。
 実際にエラーが発生しているのは別の場所、MasterMulti64exp.xls のThisworkbookモジュールのActivateイベントプロシジャあたり?
 VBE画面のツール->オプションの全般タブにあるエラートラップっをクラスモジュールで中断に設定変更して、再度実行してみて。
 本当のエラーの場所がわかるとおもうので。

 >@実行時エラー‘‐2147417848(80010108)‘: オートメーションエラーです。起動されたオブジェクトはクライアントから切断されました。 

 これは「人泣かせのやっかいな」エラーだよね。原因は様々。
 当然、(タカマチ)さんも調べているとは思うけど、
 「オートメーションエラーです。起動されたオブジェクトはクライアントから切断されました」
 これを、そのまま検索ワードにしてネット検索すると、それこそ、ごまんと記事が出てくる。
 その中で、(タカマチ)さんのケースに当てはまるようなものを捜してみるのもいいかな。
 私自身はQueryTableについては全く素人なので具体的な助言はできないんだけど、このコードを
 VBE画面でF8をおしながらステップ実行してみて、それで、エラーが発生しなければ、エキスパートさんならある程度特定はできるかも。
 ステップ実行でもエラーになれば、これは、ちょっと根本的な様々な要素を見直す必要がでてくるかもしれない。

 (ぶらっと)


 ところで・・・

 このコード、まずAでエラーになっているんだよね。ということは、後続のコードは実行されないけど
 どのようにして@までたどりついたのかな?それこそ次のコードから、そのままステップ実行?
 次のコードからはMasterMulti64exp.xls が最前面に出ていて、その(たまたま)アクティブになっているシートに対して
 処理を行う記述になっているね。

 @のエラー時、目的のシートはアクティブシートになっていたのかな?
 もう1つ、想像だけど、MasterMulti64exp.xls のActivate処理で何か設定を行うようなコード記述があるとすれば
 その処理がなされていないわけだから、つじつまがあわなくなって オートメーションエラーになることはありうると思う。

 (ぶらっと)


 おせっかいかもしれないけど、「質問箱」のほうでリコメンドされているように、まずコードをスッキリさせてからデバッグしたほうが
 解決への時間が短縮されると思うよ。

 (各コードが、どのシートのセルを対象に処理しているかが、アップされたコードでは、はなはだわかりにくいね。
 今後の要件改訂等における保守性にも問題がでてきてしまう)

 それと、モジュール先頭に Option Explicit 宣言があるのかないのか不明だけど(宣言することを強く推奨)
 update のほうは変数宣言しているのに、書き込み のほうでは変数宣言をしていないね。
 ちゃんと変数宣言することを推奨。ところで、update のほうでは 変数 開始時間 をセットしているけど使っていないね。
 この開始時間 は、このプロシジャを抜けた後、別のプロシジャからは参照できない。わかっているとは思うけど念のため。

 また、ブックの操作で Windows(キャプション文字) でもいいんだけど、通常は Workbooks(ブック名文字列) と書くね。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.