質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • VBA

    1858questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1592questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

Applicationオブジェクトについて

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 245

julia1993

score 2

マクロ無効時のApplicationオブジェクトについての質問です。

[条件1]
ネット上からダウンロードしたエクセルファイルは私の環境のセキュリティ設定では編集がロックされて
セルへの入力すらできない状態になっています。

[条件2]
ブックAの処理はオープン処理であるプロシージャを呼び出しそのプロシージャの中のOntimeメソッドで
1分後に同一のプロシージャを再起的に呼び出しています。
その流れをブックが閉じられるまで続けています。

ブックAが開いた状態でネット上からダウンロードしてきたブックをオープンし、しばらくすると
Ontimeで予約されたプロシージャが走ったタイミングで
1004 「Ontimeメソッドは失敗しました。_Applicationオブジェクト」
というエラーが発生します。

デバッグすると、1分前に予約したプロシージャの次の処理予約のOntimeメソッドでエラーが発生しています。

ここで疑問なんですが、

ネットからダウンロードしてきたブックを開いたことによって、編集がロックされ、マクロが無効になっているものとばかり思っていたのですが、一分前に予約されたプロシージャ自体は正常に実行されているにも関わらず、プロシージャの最後に書いているOntimeだけエラーになるのはなぜでしょうか?

おそらく、Applicationオブジェクトが使えないことになっているのではないかという仮説を立ててみたのですが
それであっているのでしょうか?

また、そういった状況でも、変わらず再起呼び出しの処理を実行し続けられる方法はございませんでしょうか?

ご教示いただけれは幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

2.nas.xlsmを開くとマクロを有効にするか聞かれるので、「無効」にする。
3.local.xlsmを開いて、yoyakuを実行する。(こちらはローカルにおいているのでマクロは有効) 

2.local.xlsmを開いて、yoyakuを実行する。(こちらはローカルにおいているのでマクロは有効) 
3.nas.xlsmをファイルを開く、から参照ダイアログを開いて「保護ビューとして開く」

とすると、再現しますね。
マクロの有効/無効ではなく、「保護ビュー」でApplicationオブジェクトが使えなくなっているみたいですね。

「保護ビュー」はExcelのオプションで解除できますが、インターネットからダウンロードしてきたファイル全部に効いてしまうので、あまり適切ではないですね。
試してないけど、↓の設定は効くかもしれません。
https://qiita.com/sambatriste/items/9fc5a32739049eaf7742

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/27 20:08

    ご返信が遅れて申し訳ありません。

    Application.ProtectedViewWindows.Count
    で保護ビューの数をカウントできたので、1以上の場合はOntimeを回避することにいたしました。

    ためになるご回答ありがとうございました。

    キャンセル

0

デバッグすると、1分前に予約したプロシージャの次の処理予約のOntimeメソッドでエラーが発生しています。 

この条件が整っているときに、OnTimeで予約するよう記述されたプロシージャをVBEから「F5」を押すなどして実行しても同じですか?

私の環境だと、

1.ローカルとファイルサーバー上にそれぞれマクロブック(local.xlsm、nas.xlsm)を作る。

' local.xlsm
Sub yoyaku()
Application.OnTime Now() + TimeValue("00:00:15"), "msg"
End Sub

Sub msg()
MsgBox "local!"
Application.OnTime Now() + TimeValue("00:00:15"), "msg"
End Sub
'nas.xlsm
Sub msg()
MsgBox "nas"
End Sub


2.nas.xlsmを開くとマクロを有効にするか聞かれるので、「無効」にする。
3.local.xlsmを開いて、yoyakuを実行する。(こちらはローカルにおいているのでマクロは有効)

としても、当該エラーは出ません。(15秒おきにメッセージボックスは出続ける)
マクロが有効/無効というよりは、OnTimeで予約しているプロシージャ内にマクロが無効になっているブックの処理が入っている等しているのでは?と思ったのですが。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/25 10:44

    ご回答ありがとうございます。
    実行してみましたがエラーは発生しませんでした。

    どうやらApplicationがブロックされているということではないようなので、もう少し詳しく様々なメソッドを試してみて、何ができて何ができないのか詳しく調べてみます!

    キャンセル

関連した質問

同じタグがついた質問を見る

  • VBA

    1858questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1592questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。