- ベストアンサー
ワードでファイルを開くときに実行するプログラム
ワードでファイルを開くと同時に実行するプログラムを作りたいのですがうまくいきません。 以下のようなコードを書いたのですがプログラムが走りません。これはファイルを開くときのプロシージャではないのでしょうか? Private Sub Document_Open() With 種類 .AddItem "1" .AddItem "2" End With End Sub 回答よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。Wendy02です。 >それと不思議なのはプログラムを書いて保存して同じファイルを開いたのですがプログラムが全く動いてないときがあるのですがそれは原因は分かりますか? 具体的には分からないのですが、私も、確かに、「?」という時が、何百の内の何回かはありますね。そんな時に、私は、「Stop」という単語を使います。 普通のブレークポイント(●)ですと、アプリケーションソフトを終了すると、消えてしまいますが、「Stop」は消えません。一応、On Error トラップは、なしにしてください。 Sub ~() Stop 'こういう単語を置いて調べています。(適当な場所) End Sub そうすると、プロテクトをしていなければ、その単語に来ると、VBEが開いて「黄色のライン」になって止まります。その時、「ああ!、マクロは生きている」と思って、その後を、F8 を押して、ステップモードで進めていきます。止まらなければ、「生きていない」ということになり、原因を探します。 ただ、元のご質問のコントロールツールのComboBox のAddItem をいきなり入れていくのは、もしかしたら、アクティブX コントロールが実体化する時とのタイミングのずれがあるかもしれませんね。 もし、調子が悪いようでしたら、一度、ThisDocument_Open はやめて、標準モジュールのAuto_Open() マクロ側に設置してみたらどうかと思います。実は、タイムラグがあって、標準モジュール側のほうが、ThisDocument_Open側よりも遅れて働くのです。 それでダメだったら、本当の最初から、考え直してみましょうね。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 ThisDocument モジュールに書いてあれば、当然、プログラムは走るはずですが、ただ、Normal.dot 側ですと、そのような特定のコントロール(種類)を指定したのでは、うまくできないかもしれません。 まず、コントロールツールの ListBox か、ComboBox なのか、フォームツールなのか、メニューコントロールなのか、そういうところは、大丈夫ですか?
お礼
今更ですが、お礼の記載が大変遅くなり、申し訳ありません。 ありがとうございました。
補足
コントロールツールはコンボボックスで、オブジェクト名も合っています。 ただ、コードは開く場所と違うThisDocument モジュールに書いていました(例えば文章1からプログラムを走らせたいと思ってたときに文章2のThisDocumentモジュールにコードを書いていました)。 それで動きませんでした(^_^;) ありがとうございました。 それと不思議なのはプログラムを書いて保存して同じファイルを開いたのですがプログラムが全く動いてないときがあるのですがそれは原因は分かりますか?
- marbin
- ベストアンサー率27% (636/2290)
Word VBAはほとんど使わないのでよく分かりませんが This Document以外に記述している、ということはありませんか?
お礼
コードが開く場所と違うThisDocumentモジュールに書いていました(例えば文章1からプログラムを走らせたいと思ってたときに文章2のThisDocumentモジュールにコードを書いていました)。 ありがとうございました。
お礼
いろいろ教えていただいて大変勉強になります。 今のところ問題はないようなのでこのままコードを書いていくつもりですが、問題があるようであればWendy02さんの言われたように「標準モジュールのAuto_Open()」など変えてみようと思います。 ありがとうございました。