Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : 指定なし)
ブレークポイントが解除できない
投稿日時: 19/08/25 07:33:53
投稿者: gon_pe

 デバックの為ブレークポイントを付けて実行しました所、
 ブレークポイントを消して保存したにもかかわらず、実行すると毎回
 その箇所で止まってしまいます。
 どうしたらよろしいでしょうか?
 よろしくお願いいたします。
 Accessのバージョンは2019です。

回答
投稿日時: 19/08/26 13:07:47
投稿者: おばちゃん

そのエラーはよくネットで見かけます。
私もなったことがありますが、いつの間にか直ってることもあります。
1、VBEからデバック→すべてのブレークポイントを解除し、保存して閉じ、開いて実行してみる
2、止まる行のコードを改行し、、保存して閉じ、開いて実行してみる
 
それで直らなければ最終として、
3、新規ファイルを作成し、古いファイルのコードを新規ファイルにコピペする
 
ぜひ、試してみてください。

回答
投稿日時: 19/08/26 22:11:05
投稿者: wagtail

バックアップとってコマンドプロンプトからデコンパイル。
2019はないので、msaccess.exeの場所は調べてね。

投稿日時: 19/08/27 18:33:00
投稿者: gon_pe

おばちゃん様
 
 回答ありがとうございます。
 >ネットで見かけます
 なのですね。
 
 1、も2、もダメでした。
 3、はやった事があります。3、は手間がかかるので、
 デバックのたびにこれでは… と思い、できれば他の方法をと思いました。
 
 3、は最終手段としてwagtailさんの方法も試してみます。
 
 今後とも、宜しくお願いいたします。
 

投稿日時: 19/08/27 18:36:54
投稿者: gon_pe

wagtail様
 
 回答ありがとうございます。
 

wagtail さんの引用:
バックアップとってコマンドプロンプトからデコンパイル。
2019はないので、msaccess.exeの場所は調べてね。

 
 バクアップとって、は、今のAccessの事ですね。
 「コマンドプロンプトから…」のコメントが理解できません。
 詳細にお教え願えないでしょうか。
 宜しくお願いします。

回答
投稿日時: 19/08/28 13:27:16
投稿者: おばちゃん

ネットを調べて対応策が載っていたので紹介します。
 
その行近辺を一旦削除(メモ帳なんかに待避)して再コンパイルで保存。Accessを開き直して再度コードをコピペで追加し、再コンパイルで保存する事によって以後は止まらなくなる
 
試してみてください。

回答
投稿日時: 19/08/28 20:42:41
投稿者: wagtail

https://ameblo.jp/r--lotus/entry-12091270450.html
 
msaccess.exeの場所を調べる。
Accessをどこかにおく。(例 c:\test\test.accdb)
Windowsの「ここに入力して検索」に「cmd」と入力してコマンドプロンプトを起動する。
「cd \」と入力してENTER。
「cd C:\Program Files\Microsoft Office\OFFICE16」(場所は調べたところ)と入力してENTER。
「MSACCESS.EXE /decodmpile c:\test\test.accdb」(フォルダファイル名は変える)と入力してENTER。
開いたAccessでVBE画面開いてコンパイル。
保存。
 
64ビットだとC:¥Program Files (x86)¥Microsoft Office¥Office16¥MSACCESS.EXEあたり。
Windows10で動くかは詳しい先生にお任せします。

回答
投稿日時: 19/08/29 01:07:52
投稿者: MMYS

gon_pe さんの引用:

 「コマンドプロンプトから…」のコメントが理解できません。

 
GUI/CUI を理解しましょう。
 
コンピュータを操作する方法は
・GUI
・CUI
の2つがあります。
 
GUI はCharacter User Interface の略で、グラフィックで操作します。
代表例がWindows。
たとえば、Accsessを起動するにはAccsessの形をした絵(アイコン)を
ダブルクリック。つまり、絵(グラフィック)で操作します。
 
CUI はCharacter User Interface の略で文字をキーボードから
コマンドとして打ち込み操作します。Windowosの前身はMS-DOSというCUIです。
 
このCUIですが、現在のWindowsにも搭載されてます。
このCUIを「コマンドプロンプト」と呼びます。
 
たとえば「コマンドプロンプト」を起動して
 CD "C:\Program Files (x86)\Microsoft Office\Office14"
  EXCEL.EXE /e
と打ち込むとエクセルが新規ブックなしで起動します。
  注)パスは環境により異なります。
 
EXCEL.EXE が実行コマンドです。また、/e は実行コマンドの引数です。
エクセルの引数の詳細は
https://support.microsoft.com/ja-jp/help/291288/description-of-the-startup-switches-for-excel
をご覧下さい。
 
コマンドプロンプトはWindowsでは面倒ことが結構できますので
覚えておいて損はありません。

投稿日時: 19/09/01 22:06:41
投稿者: gon_pe

おばちゃん様、wagtail様 、MMYS様
 
 回答ありがとうございます。
 コマンドプロンプトにてコンパイルを試みてみました。
 以下がその際のトレースと経過です。
 
 Microsoft Windows [Version 10.0.17763.678]
 (c) 2018 Microsoft Corporation. All rights reserved.
 C:\Users\Owner>cd\
 C:\>cd C:\Program Files (x86)\Microsoft Office\root\Office16
 C:\Program Files (x86)\Microsoft Office\root\Office16>MSACCESS.EXE /decodmpile D:\test\test.accd b
 この時点で、タスクバーにAccessのアイコンが表示され以下のメッセージが出ます
 「MicrosoftAccessを起動するためのコマンドラインに、MicrosoftAccessで認識できない
  オプションが含まれています。MicrosoftAccessを終了し、正しいコマンドラインのオプション
  を指定して、再起動してください。「OK」ボタン」
 
 「OK」ボタンをクリックすると、起動したかったAccessが起動されました。
 
 コンパイルがされた様子はなく、いつもの箇所でストップし、デバックモードはそのままでした。

回答
投稿日時: 19/09/02 00:56:50
投稿者: MMYS

/decodmpile ではなくて
/decompile だと思います。
   
ですが、その前に
  
こちらに 一旦コンパイル済みになると再コンパイル出来ないとあります。
http://access-db.info/blog/2012/12/20/%E3%83%87%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB/
  
でも、VBEにはちゃんとコンパイルコマンドは用意されてます。
 「ツール」 → 「xxxのコンパイル 」
として再コンパイルしてみて下さい。
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030.html
  
  
ところで、/decompileスイッチは公式に載ってませんね。
https://support.office.com/ja-jp/article/microsoft-office-%E8%A3%BD%E5%93%81%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89-%E3%83%A9%E3%82%A4%E3%83%B3-%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81-079164cd-4ef5-4178-b235-441737deb3a6#ID0EAABAAA=Access

回答
投稿日時: 19/09/02 19:50:05
投稿者: wagtail

ミスタイプでごめんなさい。恥。

回答
投稿日時: 19/09/02 20:52:21
投稿者: K.Hiwasa
投稿者のウェブサイトに移動

こんばんは。
 
Excelですが、同様の事象が以前よく起こっていました。
最近起きていないのと、意図して起こせないので、少し不確かですが、
以下の方法で解消していました。
 
ブレークポイントを設定していないのに勝手にブレークしたときに、
そのブレークの状態で、「Ctrl+Break」を押すと(もしかしたら連打?)、
見えないブレークポイントが解除できるようで、
その後、処理を継続して処理を終えた後は、
再度同じ処理をしてもブレークしなくなっていました。
 
参考情報ですが、簡単なので是非お試しを。

投稿日時: 19/09/02 22:07:06
投稿者: gon_pe

K.Hiwasa 様
 
 >「Ctrl+Break」
 の「Brea」キーが見当たりません!

投稿日時: 19/09/02 22:10:41
投稿者: gon_pe

MMYS 様
 
 「ツール」 → 「xxxのコンパイル 」を試しました。
 何度か、変巣の宣言やアレコレと3度エラーが出て、その都度修正し
 コンパイルしました。
 が、結果、やはり同じ個所で止まってしまいます。

回答
投稿日時: 19/09/02 22:55:24
投稿者: K.Hiwasa
投稿者のウェブサイトに移動

「Pause/Break」キーですが、「Print Screen」や「Scroll Lock」の並びにありませんか?
 
最悪ない場合は、これは試したことないので効果があるかはわかりませんが、
同じようにブレークできる「Esc」キーを「Ctrl+Break」の代わりに使ってみてはどうでしょうか?

投稿日時: 19/09/03 18:32:03
投稿者: gon_pe

 K.Hiwasa 様
 
 「Brea」キーありました。
 「PgUp/Break」で「PgUp」の下段にありました。
 で、試してみましたが、変化なしです。
 残念です。

投稿日時: 19/09/03 18:35:58
投稿者: gon_pe

おばちゃん様
 

おばちゃん さんの引用:
ネットを調べて対応策が載っていたので紹介します。
 
その行近辺を一旦削除(メモ帳なんかに待避)して再コンパイルで保存。Accessを開き直して再度コードをコピペで追加し、再コンパイルで保存する事によって以後は止まらなくなる
 
試してみてください。

 
試してみましたが、変化なしでした。

回答
投稿日時: 19/09/03 19:37:28
投稿者: Moko

まさかとは思いますが
 
https://www.moug.net/faq/viewtopic.php?t=78519&highlight=
 
こちらのコードで
「Stop」 が残っていて、そこで止まるなんてことではないですよね?

回答
投稿日時: 19/09/03 20:09:14
投稿者: K.Hiwasa
投稿者のウェブサイトに移動

昨夜、見えないブレークポイントを再現しようとしていてできなかったんですが、
今日たまたま数回再現できました。(Excelですが)
自動ブレークしているときに、Escキーでは解除できませんでしたが、
やはりCtrl+Breakでは解除できました。
 
> 「PgUp/Break」で「PgUp」の下段にありました。
 
http://xxyuixx0.blog.fc2.com/blog-entry-34.html
上記ページの画像のような感じですかね?
 
念のための確認ですが、このような場合のBreakキーは、
Fnキーと「PgUp/Break」の同時押しでBreakキーになりますので、
「Ctrl+Break」を行いたい場合、CtrlキーとFnキーと「PgUp/Break」キーの同時押しになります。
 
うまくいかない場合は、AccessとExcelで異なるアプリケーションなので、
Excelではうまくいくけど、Accessではうまくいかないということかもしれません。
 
ちなみに見えないブレークポイントを設定するのも以下の同様の操作で設定できることがあります。
(成功率100%ではありません。)
@ブレークポイント設定してブレークさせて、ブレーク中にCtrl+Breakを押す。
A処理を継続させる。
Bアプリケーション(Excel)を終了させる。
CExcelとファイルを開いて同じ処理を再実行。

投稿日時: 19/09/03 23:33:20
投稿者: gon_pe

Moko 様
 

Moko さんの引用:
まさかとは思いますが
 
https://www.moug.net/faq/viewtopic.php?t=78519&highlight=
 
こちらのコードで
「Stop」 が残っていて、そこで止まるなんてことではないですよね?

 
これは、前回の私の質問ですね。
この時の続きです。
検証しよううとブレークポイントを設定しトレースしました。
結果が確認できたのでブレークポイントを外し保存しました。
が、現在もその箇所で止まってしまいます。

回答
投稿日時: 19/09/03 23:44:16
投稿者: wagtail

MMYSさんのご指摘でもだめでした?
なら、スイッチの位置が変わってるようにも見えるので、
「cd \」と入力してENTER。
「cd C:\Program Files\Microsoft Office\OFFICE16」(場所は調べたところ)と入力してENTER。
「MSACCESS.EXE /decompile」とだけ入力してENTER。
開いたAccessでファイルメニューから該当ファイルを開いてVBE画面開いてコンパイル。
保存。
でどうでしょう。

回答
投稿日時: 19/09/04 00:25:43
投稿者: MMYS

gon_pe さんの引用:

 「PgUp/Break」で「PgUp」の下段にありました。
 で、試してみましたが、変化なしです。

Fnキーはありますか。あるなら同時押しです。
 
日本では109キーボードが標準です。本来の配置は
http://e-words.jp/w/109%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89.html
http://qa.elecom.co.jp/faq_detail.html?id=5262#109
となります。
 
つまり、PageUpの上。
ScrollLockの右隣り。
です。
 
109とあるとおり、キートップは109個です。
ですが、特ににノートパソコンのような場合、
物理的に109個キーを配置出来ません。
そこで使用頻度の低いキーはFnキーと併用となります。
 
つまり、「Cotl」+「Fn」+「PgUp/Break」です。
 

回答
投稿日時: 19/09/04 00:26:57
投稿者: MMYS

ブレークポイントを解除したあと、Accsessを終了せすに
そのコードを再度実行。このときも該当箇所で停止しますか。
 
それとも解除後、止まらないことを確認。そして保存。
開き直すと停止する。
 
のどちらでしょうか。
 
ところで、具体的にブレイクポイントで停止するコードは
どんなコードですか。

投稿日時: 19/09/04 20:27:27
投稿者: gon_pe

Moko様 皆様
 

Moko さんの引用:
まさかとは思いますが
 
https://www.moug.net/faq/viewtopic.php?t=78519&highlight=
 
こちらのコードで
「Stop」 が残っていて、そこで止まるなんてことではないですよね?

 
本日仕事中に「ふっ」と気になり…、
ご指摘の内容をはき違えておりました。
「Stop」のコード、まさにそこで止まっておりました。
StopのコードはExcelを止めるコードだと思い込んでおり、
調べてもいませんでした。
そこを削除し、実行したことろ、止まらずに実行できました。
長々お付き合いさせてしまい、誠に申し訳ありませんでした。
 
なにか、コメントがあればと思い、このページ、しばし、このままにさせて頂きます。
宜しくお願い致します。

投稿日時: 19/09/07 17:03:13
投稿者: gon_pe

回答をくださった皆様
 
 たくさんの情報をありがとうございました。
 今回の内容をメモし、記録に残して次回に生かしたいと思います。
 まだまだ未熟ものですが、今後とも宜しくお願い致します。