たびたびお世話になっております。
excel2000のVBAでユーザーフォームを作成し、ユーザーフォーム上のコマンドボタンで処理を実行しています。処理はワークシート上の計算を実行したり、メールに添付し送信したり・・・です。この実行後にもう一度ユーザーフォームを開こうとすると、(ユーザーフォーム.show)まず、パス名が無効です、のエラー。ワークブックを保存し閉じようとすると(これもユーザーフォームのコマンドボタン)、オートメーションエラーです、となります。ユーザーフォームを閉じ、excelを終了しようとすると、EXCELは終了できません。となってしまいます。
なぜ?どーして?チンプンです。
ちなみにその後、もう一度同じワークブックを開こうとすると、使用中になり、
読取専用でしか開けません。
どうか、教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

「メールに添付し送信」の段階で実行中なのにユーザーフォームにアクセスしたためエラーがでたようです。


エクセル自体は処理はおわってもリンク先の他のアプリケーションがまだ処理が終わっていないかもしれません。
強制終了すると使用していないのに使用中となってしまいます。
この状態を解除するにはWINDOWS2000だとctrl+Altでタスクマネージャを開き、プロセスでEXCEL.exeを選択してプロセスの終了。WIN95/98だと(VISUAL STUDIOがあればプロセスビューアを使って)なければ再起動するしかありません。
    • good
    • 0
この回答へのお礼

ありがとうございました。
実行中なのですか。どのくらい時間がかかるのかはわかりませんよね。
ユーザーに配布するワークシートなので、あまり好ましくないですね。メールに添付するところは外そうかな?とも思いました。
ユーザーフォームの使い方、あまり良く理解していなくて申し訳ありません。
もうすこし勉強しようと思います。ありがとうございました。

お礼日時:2002/01/21 09:12

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QOLEオートメーションについて教えてください。

こんばんは。
pcにMS08-008のセキュリティパッチをインストールすることを検討しているのですが、言葉の意味が難しいので教えてください。

OLE オートメーション?の脆弱性を解決するものらしいのですが、そのOLE オートメーションがJavaScriptやVBScriptによるリクエストを処理する過程に脆弱性が存在する。
http://www.hotfix.jp/archives/alert/2008/ms08-008.html

OLEオートメーションとはアプリケーションがデータを共有したり制御したりすることを可能にするもの、というところまではなんとなくわかりました。

エクセルやワードに関係があるってところもなんとなくわかりました。

しかし、データの共有とJavaScriptなどのスクリプトによる処理、ってのがまったくイメージがわかないです。

具体的にどういうことなのかお教えいたたいてもよろしいでしょうか。
よろしくお願いします。

Aベストアンサー

「データの共有」というのはどういう事を指すのかについては、こちらに記載があります。
http://www.moug.net/skillup/nksw/nksw15-02.htm

> JavaScriptやVBScriptによるリクエストを処理する
は、「OLEオブジェクトを含んだファイルが、スクリプトの処理の対象になる」と解釈すればよいと思います。
例: 対象のファイルを開いて内容を表示しなさいというスクリプトAがあった場合に、その対象として「あるOLEオブジェクトを含んだファイルB」が選ばれる

QAccessで、フォームAからダイアログモードで立ち上げたフォームBを開き、フォームBを閉じた時にフォームA側でマクロを実行したい

タイトルのままなのですが、

フォームA(メインとなる画面)と
フォームB(コードの検索画面)があり、
フォームAからフォームBをダイアログモードで開いている状態から、
フォームBを閉じたときに、フォームA側でマクロを実行したいと思っています。

具体的には、フォームAにコード入力用のテキストボックスがあり、コード検索のためにフォームBを立ち上げ、コードを選択した後フォームAのテキストボックスにそのコードを入れて、そのコードの値を元にフォームAにあるコンボボックスの再クエリを行いたいのです。

コンボボックスの再クエリの方法等は理解しているのですが、
上記のような場合に、どのイベントがキックされるのかが分かりません。
どのようにすれば(どのイベントを選んでマクロを指定すれば)適切に実行できるでしょうか。

Aベストアンサー

フォームBの処理
「値の代入」
「オブジェクトの選択」
  オブジェクトの種類:フォーム
  オブジェクト名:フォームA
「再クエリ」
  コントロール名:コンボボックス名
でいかがでしょうか?

QExcelマクロのオートメーションエラーについて

以前は良かったExcel2003で作成したマクロプログラムを1部修正して実行時に1回オートメーションエラーがでたら、修正部を元に戻してもオートメーションエラーがでるようになってしまいました。
このプログラムをExcel2007の他のPCで実行してもエラーはでません。
どのようにしたら、オートメーションエラーはでないようにできるでしょうか。

Aベストアンサー

>単純に何で元に戻してもだめなのか、又、何でこのファイルを他のPCにコピーしてやれば、実行できるのでしょうか?

上位バージョンで使ったものは、下位バージョンに回しても、そのままの使えないことがあります。ふつうは、下位バージョンでも、外部のライブラリなどを更新していたりするのですが、必ずしもしていないことがあります。もちろん、外部ライブラリが壊れているということもあります。

解決のためにいくつかの方法をするしかないわけで、同じ経験がある人がピタリと当たることがありますが、こちらは、今のところ、何が問題なのか、それを特定する情報は出ていません。オートメーション・オブジェクトを生成するのは、1つだけではありません。本当に数多くあります。

可能性のある方法いくつか試してみていただくしかないのであって、結果オーライだと思います。

オートメーション・エラーというなら、Active Xやいくつかの外部タイプライブラリのはずです。

どこかの行で黄色く反転して、マクロが止まっているなら分かりやすいです。しかし、ランタイムエラーの場合は、プロシージャを直接触れるなら、それらを適当な行で、[ブレイクポイント]などを付けて、どこでエラーが発生するか、検証して行けば、通常、発生しているか見つかるはずです。仮に、数万行でも、上記のようなデバッグのテクニックを使えばそんなに大変なことではありません。

ただし、プロテクトされているなら、製作者にリクエストして、PCのメインテナンスを含めてみてもらわないといけないかもしれません。さっぱり分からないというなら、ベテランの人に頼むしかありません。

もともと、Excel 2003で動いていたというなら、VBAの内容を完全な最初の段階に戻せば動くはずだ、と考えるのは自然ではないでしょうか。前回、そういうことを書いたつもりなのですが……。それに対する反応はされませんでしたね。この考え方は間違っているとお思いでしょうか?

他にも、Office を修復してみるとか。Excelの場合は、ヘルプからアプリケーションの修復をしてみるとか。

いくつか実施してみてください。ただ、ピタリと当ててほしいというなら、私のほうからはもう回答できませんが、他の回答者のためにも、もう少し情報を出さないと難しいと思います。

ただ、外部ライブラリが壊れている場合は、VBAだけの知識では解決は不可能です。

>単純に何で元に戻してもだめなのか、又、何でこのファイルを他のPCにコピーしてやれば、実行できるのでしょうか?

上位バージョンで使ったものは、下位バージョンに回しても、そのままの使えないことがあります。ふつうは、下位バージョンでも、外部のライブラリなどを更新していたりするのですが、必ずしもしていないことがあります。もちろん、外部ライブラリが壊れているということもあります。

解決のためにいくつかの方法をするしかないわけで、同じ経験がある人がピタリと当たることがありますが、こちら...続きを読む

QExcel 閉じたユーザーフォームの再呼出し

まいったまいった VBAの初心者です。

Excelでブックを開いたとき自動で呼び出したユーザーフォームを、いったん閉じてから、
もういちど編集のために VB Editoer に呼び出すにはどうしたらよいのでしょう。
教えて下さい。よろしくお願いします。

Aベストアンサー

こんにちは。

それは、まず、ショートカットを覚えてください。

Ctrl + R で、プロジェクトエクスプローラ

F4 で、プロパティウィンドウ

後は、プロジェクトエクスプローラの中のアイコンをクリック

プロジェクトエキスプローラのタイトルの下にあるのをマウスカーソルで触ると、
コードの表示,オブジェクトの表示

とチップテキストがポップアップしますので、「コードの表示」を選択

QVC++6.0のオートメーションタブはVS2005の?

VC++6.0でプロパティを追加するとき、
ClassWizard→オートメーションタブ→プロパティの追加(A)
とやっていきますが、2005でどう対応するのか教えてください。
(これを通過しても次でまた困るのかもしれませんが)

Aベストアンサー

MFC ActiveXコントロールのプロジェクトですか?
クラスビューを開いて
作成中のコントロールのライブラリノードを展開します
作成中のコントロールが myCtrl ならば myCtrlLibといったノードです
展開したノードの 2番目の要素を右クリックして 追加 > プロパティの追加 といった手順でしょう

MSDNの『MFC ActiveX コントロール : ストック プロパティの追加』
または
『MFC ActiveX コントロール : カスタム プロパティの追加 』
あたりを参照してみてください

参考URL:http://msdn2.microsoft.com/ja-jp/library/6hx27e5c(VS.80).aspx

Qユーザーフォームを閉じれないようにする

ユーザーフォームに付いている「閉じる」のボタンを
無効または非表示にしたいのですが、出来るんでしょうか?
出来るならばやり方も教えて下さい。

Aベストアンサー

こんにちは。

「閉じる」ボタン(×)を押したときだけは、それを無効にします。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
 Cancel = True
End If
End Sub

以下のようなボタンをつければ、終わることができます。

Private Sub CommandButton1_Click()
 Unload Me
End Sub

Q日本ビジネスオートメーションっていう会社を知っていますか

10年以上前になってしまうんですが、
神奈川県川崎近辺に
 「日本ビジネスオートメーション」っていう
コンピュータ会社があったのですが、
現在どうなっているか知っている方はいらっしゃいますか?

 *たぶん、それなりに大きな会社だったと記憶しているんですけど

Aベストアンサー

現・東芝情報システム(株)やおまへんか

参考URL:http://www.tjsys.co.jp/kai/enkaku.htm

QエクセルのVBAでユーザーフォームを4秒ぐらいで閉じるようにするには

お世話になります

マクロボタンを押すとウエルカムフォームが先に立ち上がり
ウエルカムフォームを4秒ぐらい表示させてからメインのユーザフォームを表示させたいのです。(4秒後はウエルカムフォームは自動で閉じさせたい)


ウエルカムフォームは一様FLASHを設置する予定です
わかる方お願いします

Aベストアンサー

これでいかが。
Private Sub UserForm_Activate()
Application.Wait (Now + TimeValue("00:00:04"))
Unload Me
End Sub

QExcel VBAでオートメーションエラーがでる

いつもお世話になっております。

Sheets("修正シート").Select
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
Sheets("箇所見る").Select
Range("A1").Select

上記のところで実行エラー オートメーションエラーです。
とメッセージがでます。
何がいけないのでしょうか?
よろしくお願い致します。

Aベストアンサー

シートモジュールに書いていませんか?
シートが削除された瞬間に実行中のマクロが消滅するので、以後の構文は実行不可能になります。

標準モジュールに記述して下さい。

Q複数のユーザーフォームをコマンドボタンにて表示・非表示させるには

VBA勉強中のものです。

複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。
例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、
  コマンドボタン1→ユーザーフォーム1を表示
  コマンドボタン2→ユーザーフォーム2を表示
  コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。
 そこで、下記のようにコードを作成したのでですが,一度表示させたユーザーフォームを再度表示させようとコマンドボタンをクリックしたら、「フォームはすでに表示させているのでモーダル表示はできません」とエラーがでてしまいます。
  どなたか、どのようにしたらいいかご教授ねがいます。

サンプルコード)
---------------------------------------------------
'UserForm1のコード

Private Sub CommandButton2_Click()
Call UserForm2_show
UserForm1.Hide
End Sub

Private Sub CommandButton3_Click()
Call UserForm3_show
UserForm1.Hide
End Sub
----------------------------------------------------
'UserForm2のコード

Private Sub CommandButton1_Click()
Call UserForm1_show
UserForm2.Hide
End Sub

Private Sub CommandButton3_Click()
Call UserForm3_show
UserForm2.Hide
End Sub
-------------------------------------------------------
'UserForm3のコード

Private Sub CommandButton1_Click()
Call UserForm1_show
UserForm3.Hide
End Sub

Private Sub CommandButton2_Click()
Call UserForm2_show
UserForm3.Hide
End Sub
------------------------------------------------------------
'標準モジュール コード

Sub UserForm1_show()
UserForm1.Show
End Sub

Sub UserForm2_show()
UserForm2.Show
End Sub

Sub UserForm3_show()
UserForm3.Show
End Sub

VBA勉強中のものです。

複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。
例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、
  コマンドボタン1→ユーザーフォーム1を表示
  コマンドボタン2→ユーザーフォーム2を表示
  コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。
 そこで、下記のようにコードを作成したのでですが,一度表示させたユーザー...続きを読む

Aベストアンサー

モードレスではない状態で2つのユーザーフォームを同時表示させようとしているので、エラーになっているのです。
UserForm1をHideしてから、UserFrom2を表示するようにすればいいのです。

Private Sub CommandButton2_Click()
UserForm1.Hide
Call UserForm2_show
End Sub

Private Sub CommandButton3_Click()
UserForm1.Hide
Call UserForm3_show
End Sub


人気Q&Aランキング

おすすめ情報