プロが教える店舗&オフィスのセキュリティ対策術

次のコードを実行させるとファイル Book1.xlsx がオープンされますが、VBAのコードが実行されません。そのため次のコードが実行できなくなっています。環境はWindows 10 、Excel2016 です。

〜 前のコード 〜

Workbooks.Open ("¥¥Mac¥Home¥共有フォルダ¥book1.xlsx")

〜 次のコード 〜

前のコードにブレークポイントを設定し、そこで一度止めてから実行を継続させると正常に次のコードのブレークポイントで止まります。しかし、前のコードでブレークポイントを設定せずに実行させると次のコードに設定したブレークポイントで停止しません。

book1.xlsxはまっさらなファイルでVBAのコードはありません。

何が原因でしょうか。

質問者からの補足コメント

  • 目的の book1.xlsx が開いていることは確認しています。

    >ファイルオープン後にすぐ「ThisWorkbook.Activate」を実行する

    コードが実行されないので、ThisWorkbook.Activate」を実行する ことができない状態です。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/08/28 19:29
  • ファイルオープン後のコードは次の通りです。

    For i2 = 1 To Worksheets.count
    With sBook.Sheets(i2)
    If .Cells(8, 2) = "パラメータ" And .Cells(8, 5) = "値の並び" Then
    ss = Split(.Cells(1, 23), " ")
    vernum = Left(ss(0), 2)
    If vernum = "v7" Or vernum = "v6" Then

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/08/28 19:48
  • オープンされた「book1.xlsx」のシート数です。

    メッセージボックスは出ません。

    ブレークポイントは全て外してあります。

    疑問なのは、一度手前でブレークポイント設定すると、そこから継続させた場合は正常にコードが実行されるのに、手前で止めないでそのまま実行させると次のコードが実行されない点です。

    謎です。

    No.3の回答に寄せられた補足コメントです。 補足日時:2016/08/28 20:11
  • ご指摘の確認は既に行っています。現象は同じでした。

    一度ブレークポイントで止めると、開いたブックが「前面」になり、そのあとのコードが正常に実行できるが、止めないで連続で実行させると、ブックの「参照の仕方」に問題があり、コードが実行されないように見えているようです。

    この辺りを重点的に調べてみます。

    No.4の回答に寄せられた補足コメントです。 補足日時:2016/08/28 20:54
  • 自己解決しました。

    原因はVBAの仕様でした。

    今回のコードはShiftキーを押しながらボタンをクリックすることで実行されます。この場合、VBAの仕様により、Shiftキーが押下された状態では、File Open以降のコード実行が停止するために起きた現象でした。

    詳しくは次のページに解説があります。

    https://support.microsoft.com/ja-jp/kb/555263

    この問題で5時間近く費やしてしまいました。でも解決できてよかったです。

      補足日時:2016/08/28 23:06
  • VBAの仕様ではありませんでした。

    VBAのバグでした。

      補足日時:2016/08/28 23:10

A 回答 (4件)

新規作成のブックを空白のまま作り適当なところに保存して、今のコードでそのブックを指定して動かしたらエラーは出るかもしれませんが先に

進みますか?
この回答への補足あり
    • good
    • 0
この回答へのお礼

何度も対応してくださり、ありがとうございました。

お礼日時:2016/08/28 20:56

目的として考えている「Worksheets.count」はオープンされた「book1.xlsx」のシート数ですか?それとも、マクロが書かれているブックのシート数でしょうか?


----------------------------------------------------------
間違いは無いと思うのですが、念の為
①「For i2 = 1 To Worksheets.count」の前の行に「MsgBox ("見えますか")」追加してもメッセージボックスは出ないんですよね。
② もちろんブレークポイントは全て外してあるんですよね。
この回答への補足あり
    • good
    • 0

ファイルオープン後のコードはどんなものでしょうか?数行でかまわないので提示していただけないでしょうか?

この回答への補足あり
    • good
    • 0

もしかしたら他のブックが開いてしまったので、アクティブブックがそちらに移ってしまったために一部のコードが実行できなくなってしまったのでは?(「Range("A1").Select」のようなコードは使えなくなります)


原因がそれならば、ファイルオープン後にすぐ「ThisWorkbook.Activate」を実行すると良いかもしれません。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています