[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『UserFormからエクスプローラを立ち上げて閉じる際のエラーについて』(まき)
OS:2003、Ver:2003
いつも色々参考にさせて頂いております。ここ最近質問ばかりですいません。
UserFormからエクスプローラを立ち上げて閉じるVBAを次の通り作成しました。所が、 2000と2007では問題ないのですが、2003だけ「ご迷惑をお掛けしました・・・」とエラ ーになります。それも、2003だけです。このVBAで2003だけエラーになる要素が有るので しょうか?
Private Sub CommandButton5_Click() Dim パス As String Dim タスクID As String Unload Me Application.Visible = True '画面を出す Windows("○×.xls").Activate パス = ActiveWorkbook.Path Application.DisplayAlerts = False 'メッセージを出さない タスクID = Shell("explorer.exe " & パス, vbNormalFocus) If タスクID = 0 Then MsgBox "起動に失敗しました" End If Workbooks("○×.xls").Close End Sub
以上よろしくお願い致します。
初めて聞くエラーメッセージです。
知っている方が現れるまで、いくつか思いついたことを試してみましょう。
以下のコードではどうでしょうか?
Sub samp() On Error Resume Next With CreateObject("InternetExplorer.Application") .Visible = True .MenuBar = False .navigate "D:\My Documents\TESTエリア\testarea2002" ' ↑目的のフォルダパスを指定する CreateObject("wscript.shell").Popup "ok" .Quit End With End Sub
1台だけで使用するのであれば、直接パスを明記すればいいのですが、ネットワーク環境化や他店での 使用もある為に、ファイルを開いた際にパスを取得する方法に変更しました。 以前はエクスプローラのホルダー指定を直接パスで明記しておりました。 タスクID = Shell("explorer.exe " & パス, vbNormalFocus) → 今回 Shell "Explorer.exe \\abcd\my documents\出荷依頼書原簿", 1 → 以前 最初はabcd PCの出荷依頼書原簿と言うフォルダーを明記したが、このマクロで保管先の abcd PCで動かした所、エラー(詳細は不明)になると聞いたのでパスを取得して修正しました。 ネットワーク環境化で2000〜2007があり、2003だけ最後にエクセルの右上の×やメニューから閉じるを 行うと”ご迷惑をお掛けしました・・・”となります。2000と2007ではOKなので、??です。 ちなみにVBAを次の様にした所、実行時エラー53ファイルが見つかりませんとなります。 Shell "Explorer.exe" & パス, 1 次の通り修正しても、”ご迷惑をお掛けしました・・・”となります。 Shell "Explorer.exe /select," & パス, 1
以上よろしくお願い致します。
>1台だけで使用するのであれば、直接パスを明記すればいいのですが
ん?直接パス指定するとかしないとかは、今は関係ありませんよね?
今は、エラーの確認をしている段階ですので・・・。
1
Sub samp() On Error Resume Next With CreateObject("InternetExplorer.Application") .Visible = True .MenuBar = False .navigate "D:\My Documents\TESTエリア\testarea2002" ' ↑目的のフォルダパスを指定する CreateObject("wscript.shell").Popup "ok" End With End Sub
このコード(ちょっと変更)で フォルダ名を適当に変えて実行し、 エラーの発生の有無を確認したいのです。
2 フォルダを開く方法は他にも
'================================================================= Sub sample() CreateObject("shell.application").Open "D:\My Documents\TESTエリア\testarea2002" End Sub
こんな方法もあります。フォルダ名を変更して、エラーの有無を確認してみてください。
パスの変数化なんて、エラーが発生しないなら、考えればよいのです。
ichinose
さて、ichinose様からご連絡頂いた方法を試してみました。本結果をご報告申し上げます。
方法1.下記の通りVBAを明記して実行させました。(2003のみ)→Windows Script Host boxが立ち上がり OKを押し、エクセルシートが閉じた後×を押しましたが、”問題が発行したため・・・”(同じ現象)
Private Sub CommandButton5_Click() Dim パス As String Dim タスクID As String Unload Me Application.Visible = True '画面を出す Windows("出荷依頼書.xls").Activate On Error Resume Next With CreateObject("InternetExplorer.Application") .Visible = True .MenuBar = False .navigate "\\abcd\my documents\出荷依頼書原簿" ' ↑目的のフォルダパスを指定する CreateObject("wscript.shell").Popup "ok" End With Workbooks("出荷依頼書.xls").Close End Sub
方法2.下記の通りVBAを明記して実行させました。(2003のみ)→エクセルシートが閉じた後×を押しま したが、”問題が発行したため・・・”(同じ現象)
Unload Me Application.Visible = True '画面を出す Windows("出荷依頼書.xls").Activate CreateObject("shell.application").Open "\\abcd\my documents\出荷依頼書原簿" Workbooks("出荷依頼書.xls").Close
今回は2003しか不具合が発生していない為、上記のVBAは2000と2007では実施しておりません。
以上よろしくお願い致します。
もう一つ試して下さい。エラーの原因を探索するためです。
この直前のコードは、まきさんが現在問題にしているブック内のコードを私が提示したコードに 差し替えての実行結果ですよね?
そうではなく、別の新規ブックの標準モジュールに
'=============================================== Sub samp() On Error Resume Next With CreateObject("InternetExplorer.Application") .Visible = True .MenuBar = False .navigate "D:\My Documents\TESTエリア\testarea2002" ' ↑目的のフォルダパスを指定する CreateObject("wscript.shell").Popup "ok" End With End Sub
または、 Sub sample() CreateObject("shell.application").Open "D:\My Documents\TESTエリア\testarea2002" End Sub
あるいは、元々のコードでも
sub test() Dim タスクID As long タスクID = _ Shell("explorer.exe " & "D:\My Documents\TESTエリア\testarea2002", vbNormalFocus) If タスクID = 0 Then MsgBox "起動に失敗しました" End If end sub
試してみてエラーの有無を確認してみてください。
これでもエラーになるなら、Excelに問題があるということがかなり疑わしいです。
でも、新規ブックでは、エラーにならないのであれば、現在、まきさんが扱っているブックに問題が あることも考えられます。
掲載コードは、エラーの引き金になってはいても、それ以外に根本の問題が掲載されていない箇所の VBAコードやあるいは、数式などにあるという可能性もあります。 Excelの異常終了は、メモリーリークが原因になることは、経験した事があります。
とにかく、原因箇所を特定することです。
といっても結構大変な作業ですけどね!!
この手の問題の場合、原因箇所の特定が難しい場合もあります。
エラーにならないコードから、少しずつコードを追加していって、エラーにならない状況から エラーになる状況に変化する境界をさぐる作業です。
御経験のある方が現れるまでは、こういう地道な作業を行ってみてください。
それと Excel2003をお持ち方がいらっしゃいましたら、御協力お願いします。
ichinose
おはようございます、まきです。先週金曜日に確認した結果をご連絡申し上げます。 新規bookの2種類のVBAについては、何ら問題なく動作しました。但し、元々のVBAへ変更については、 やはりWindowsのエラーの「問題が発生した為・・・・」となりました。ちなみに、他の2003インストー ルPCでも同様なので、何か私のVBAの記述が悪いと思うのですが。。。。他のボタンのVBA記述との関係 も有るのかもしれません。何故2000と2007で動くのかは??です。。。 今回問題の無かった(新規bookで)物をベースに、再デバッグを行ってみてみます。
以上よろしくお願い致します。
色々デバッグを行っていて、不思議な現象が出て来ましたので報告致します。 本bookのマクロを無効にして立ち上げてみました。
1.ウインドウを閉じる→保存しない→エクセルを閉じる→Fail 2.ウインドウを閉じる→保存する→エクセルを閉じる→Fail 3.エクセルを閉じる→保存しない→OK
もしや2003のバグかと思い、新規bookでマクロを張って同様の事を行いましたが、1〜3までOKでした。 マクロを無効にして立ち上げても、記述されたマクロの影響を受けるのでしょうか? (ちなみに、このボタンのVBA部を全部コメント行にしましたが、やはり同様のエラーを生じます。)
以上よろしくお願い致します。
全てのマクロを新規bookに全てコピーをして、使用しているフォームもそのままコピーし動作させました。 使用しているシートとAuto_Open()の一部が違うだけですが、問題なく閉じる事が出来ました。よって、 他のVBAの問題でも無い判断しました。そこで、この新規にコピーしたシートを使い作り直した所(ほとんどコピー)、従来 と同じ動作でのVBAが動きましたので、これを使用する事にしました。全て100%コピーしたのでは無い為に、 原因が分からないのですが、結果OKとして使用する事にしました。違いはAuto_Open()時に、シートの Clear等を使わなくしただけなので(本来は原因を突き止めたいのですが、時間の問題もあるので)、2003 では何かの関係組合せで問題が有るのか、2003が入っているのがXp homeですが、2000と2007Xp Proの為 OSの違いの問題なのか(エクセルのエラーMessageで無い為)とも思えます。
この度はichinose様に大変お世話になりました事を感謝します。原因がつかめていない為、多少後味が 悪いのですが、性格上結果オーライ主義なのでお許し願います。
以上よろしくお願い致します。
>本内容は、解決しましたのでご説明致します。
すごい、こういうのは、中々解決できないものですけどねえ!!
>この新規にコピーしたシートを使い作り直した所(ほとんどコピー)、従来と同じ動作でのVBAが動きましたので、これを使用する事にしました。
私もこれをお奨めするつもりでしたが、手動でやってしまわれたのですねえ!!。
http://www.vector.co.jp/soft/winnt/business/se254963.html
こんなツールもありますから、今後は、ご一考ください。
ichinose
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.