[[20081202151351]] 『UserFormからエクスプローラを立ち上げて閉じる際』(まき) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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台だけで使用するのであれば、直接パスを明記すればいいのですが

 ん?直接パス指定するとかしないとかは、今は関係ありませんよね?

 今は、エラーの確認をしている段階ですので・・・。

 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様、おはようございます、まきです。

 さて、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


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部を全部コメント行にしましたが、やはり同様のエラーを生じます。)

以上よろしくお願い致します。


自己レスの2回目です。本内容は、解決しましたのでご説明致します。

 全てのマクロを新規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.