エクセルのユーザーフォームのコマンドボタンを押すと
Shell関数を使って他のアプリケーションを実行するように
しているのですが
あるPCでは出来るのに 他のPCでは「ファイルが見つかりません。」
というエラーになります。なぜか判りません。
どなたか教えてください。
宜しくお願いします。
>他のPCで
ネットワーク越しの実行では無く、ローカル実行ですよね?
エラーメッセージの通り、ファイルが無いのでは?
実行コマンドのファイルパスと、
実際に実行されるアプリのパスを確認してください。
特攻隊長まるるう様
遅くなりすみません
>ネットワーク越しの実行では無く、ローカル実行ですよね?
他のPCは会社のものなので
ネットワークでつながっていると思います。
それが原因でしょうか。
宜しくお願いします。
いえ、PCがネットワークにつながっているかどうかではなくて、
Shell関数の第一引数は実行したいアプリケーションの指定を
しますが、フォルダ、またはドライブを含めて指定できます。
ここにネットワーク越しのパスを指定していないか?という事を
聞きたかったのです。
もう一度書きますが、実行しようとしているアプリケーションの
パスを確認してください。
特攻隊長まるるう様
ありがとうございます。
>ここにネットワーク越しのパスを指定していないか?
すみません。素人なので意味がわかりません。
>もう一度書きますが、実行しようとしているアプリケーションの
>パスを確認してください。
すみません。
式はこのようなものです。
Private Sub CommandButton1_Click()
Dim RetVal
RetVal = Shell("ソフト名""C:\WINDOWS\デスクトップ\A.xxx""", 1)
End Sub
どうぞ宜しくお願いします。
>ソフト名
は、ちゃんとインストールされてますか?ログオンユーザで実行できますか?
確認してください。
>C:\WINDOWS\デスクトップ\A.xxx
ユーザのデスクトップの設定は\WINDOWSフォルダの下には無いと思いますので
それは誰かが特別に作成したフォルダとファイルですよね?
まず、存在しますか?エクスプローラで見てください。
存在するなら誰がいつ作成しましたか?また、ログオンユーザで
そのファイルを開けますか?確認お願いします。
あと一応、ソフト名の後ろに半角スペース入れて置いてください。
RetVal = Shell("ソフト名 ""C:\WINDOWS\デスクトップ\A.xxx""", 1)
>ソフト名はちゃんとインストールされてますか?
ソフト名はそれ自体動きますのでインストールされていると思います。
>ログオンユーザで実行できますか?
すみません一応調べてみたのですが、意味がわかりません。
ログオンユーザで実行とはどのようにするのでしょうか。
>ユーザのデスクトップの設定は\WINDOWSフォルダの下には無いと思いますので
>それは誰かが特別に作成したフォルダとファイルですよね?
これは自分のPCですが特別に作成した憶えはありません。
>まず、存在しますか?エクスプローラで見てください。
自分のPCで実行出来るので存在すると思います。
>存在するなら誰がいつ作成しましたか?また、ログオンユーザで
>そのファイルを開けますか?確認お願いします。
すみません、こちらもどのようにすればよいか ご指導宜しくお願いします。
よくこの状況でプログラム組んでますね…。
今一度Windowsの事から勉強された方がよろしいかと思われます。
名無しさん
ありがとうございます。
>今一度Windowsの事から勉強された方がよろしいかと思われます。
じゅうじゅうわかって緊急なのでお願いしています。
ご指導宜しくお願いします。
>あるPCでは出来るのに 他のPCでは「ファイルが見つかりません。」
>というエラーになります。なぜか判りません。
あるPCでは、"C:\WINDOWS\デスクトップ\A.xxx"というパスでも、
他のPCでは、"C:\WINDOWS\デスクトップ\aaa\A.xxx"かもしれない。
Shell関数のパス指定が"C:\〜"なのでネットワークは関係ないかもしれません。
エラーが出るPCで
ファイル名を指定して実行に
Shell("ソフト名 ""C:\WINDOWS\デスクトップ\A.xxx""", 1)
のソフト名を入力してアプリは起動しますか?
ファイル名を指定して実行に
C:\WINDOWS\デスクトップ\A.xxx
を入力してエラーはでませんか?
これを先ず確認してください。
コボルさん
通りすがりさん
ありがとうございます。
他のPCで確認して
結果を報告します。
通りすがりさんエラーが出るPCで
>ファイル名を指定して実行に
>Shell("ソフト名 ""C:\WINDOWS\デスクトップ\A.xxx""", 1)
>のソフト名を入力してアプリは起動しますか?
>ファイル名を指定して実行に
>C:\WINDOWS\デスクトップ\A.xxx
>を入力してエラーはでませんか?
>これを先ず確認してください。
C:\WINDOWS\デスクトップ\A.xxxではエラーになりましたが
参照ボタンで選択して
C:\Documents and Settings\SIROUTO\デスクトップ\A.xxx
で実行できます。
宜しくお願いいたします。
デスクトップのパスを得る、の参考:
http://www1.u-netsurf.ne.jp/~tomo_c/tips/WSH004.html
…そもそもプログラムを変更することが
できるように思えないから、
C:\WINDOWS\デスクトップ\A.xxx
作ったほうが早いと思うんですが。
>素人さん
原因わかったんですよね?
何を
>宜しくお願いいたします。
???
>宜しくお願いいたします。???
Private Sub CommandButton1_Click()
Dim RetVal
RetVal = Shell("ソフト名""C:\Documents and Settings\SIROUTO\デスクトップ\A.xxx
""", 1)
End Sub
としたら「実行時エラー53ファイルが見つかりません」となります。
宜しくお願いいたします。
>特攻隊長まるるう 2005/12/15(木) 19:20:33
に戻りますけど
>ソフト名の後ろに半角スペース入れて置いてください。
>ソフト名の後ろに半角スペース入れて置いてください。
入れました
変化無しです
では
>通りすがり 2005/12/16(金) 09:41:11
の内容に戻ってください。
こちらでは、例えば
[ファイル名を指定して実行]で
"C:\Documents and Settings\maruru\デスクトップ\テスト.xls"
Excel.exe "C:\Documents and Settings\maruru\デスクトップ\テスト.xls"
[エクセルのユーザーフォームのコマンドボタン]で
Private Sub CommandButton1_Click()
Dim RetVal
RetVal = Shell("Excel.exe ""C:\Documents and Settings\maruru\デスクトップ\テスト.xls""", 1)
End Sub
の動作確認を行っております。エラー無く表示されました。
考えられるのは起動しているソフトで他になにかファイルを
参照していることですが、それはソフト作成者に聞かないと
分かりません。
ソフト名はわかりませんが次の例のようにソフトまでのパスを記入してみてください。
「"」を沢山使用してますが、見にくいですから次の様な形でもOKです
RetVal = Shell("c:\Program Files\Microsoft Office\Office\Excel.exe D:\book1.xls", 1)
53エラーはソフトが見つからない場合
ソフトがある場合はそのソフトが立ち上がり、そのソフトがファイル無いよとエラーが出ます。
ソフト名や引数のファイル名を実際のパスに置き換えないで
そのまま
RetVal = Shell("ソフト名 ""C:\Documents and Settings\SIROUTO\デスクトップ\A.xxx""", 1)
と打ち込んでいるに一票
>あるPCでは出来るのに 他のPCでは「ファイルが見つかりません。」
最初のレス内容に戻りますが・・・・・・・
これは、あるPCで作成したEXEファイルを他のPCで実行したら、
目的のソフトを起動できずにエラーが発生しているということで内容を進めると・・・・・・・・・・・・
原因はログオンユーザが違うので、パスが違ってきます。
そもそも、違うユーザにも関わらず「C:\Documents and Settings\SIROUTO\デスクトップ\A.xxx」のようにフルパスで直接入力するのは、間違いです。
この時点で、パスの参照関係を知らない→パソコンが初心者→8レス目の名無しさんのような発言が発生。→同時にPC用語を知らないため、皆が説明するのが大変。→レスが長引いていく→そのうち、皆に見捨てるか、無視される。
というような流れが発生します。
デスクトップ上なら
ガッさんが紹介してくれたhttp://www1.u-netsurf.ne.jp/~tomo_c/tips/WSH004.html
のページでログオンユーザのデスクトップ上のパスを取得し、
それをShell関数に組み込みます。(デスクトップ上のパス & ファイル名.拡張子)
この文章の中で理解できないPC用語が出てきた場合はネットにて検索し、覚えてください。
特攻隊長まるるうさんへ
>…そもそもプログラムを変更することが
>できるように思えないから、
>C:\WINDOWS\デスクトップ\A.xxx
>作ったほうが早いと思うんですが。2005/12/16(金) 14:31:41
作りましたがだめです。
マグさん
>デスクトップ上なら
>ガッさんが紹介してくれた
>http://www1.u-netsurf.ne.jp/~tomo_c/tips/WSH004.html
>のページでログオンユーザのデスクトップ上のパスを取得し、
>それをShell関数に組み込みます。
>(デスクトップ上のパス & ファイル名.拡張>子)
理解してやりましたがやはり無理です。
>この文章の中で理解できないPC用語が出てきた場合は
>ネットにて検索し、覚えてください。
理解しましたが 何度やってもファイルが見つかりませんのエラーがでます
なぜ「無理」と分かりましたか?
具体的な根拠を挙げれば、何か分かるかもしれません。
…正直なところ、「だめ」とか「無理」とか「理解している」と書かれたところで、
それが何の意味があるのか分からない…
>なぜ「無理」と分かりましたか?
何度やってもファイルが見つかりませんのエラーがでます
初心さんが仰ってますが。
ソフト名には絶対パスが入ってますか?
もしもそうならソフトのインストールディレクトリが違うとか・・・
#は、無いかな?|=x=;
KGさんありがとうございます
素人なのでお許しください
>ソフト名には絶対パスが入ってますか?
とは
バージョン情報の
正式名
〜.EXEの事でしょうか
絶対パスは
C:\Program Files\Hoge\hoge.exe
のような記述です。
このような指定をしているのであれば、
動くPCでは
C:\Program Files\Hoge\hoge.exe
かもしれませんが、動かないPCでは
C:\Program Files\Sample\hoge.exe
にソフトがあったら動きませんよね。
ソフトが入っているところは同一かどうかの確認でした:)
レスの流れから判断して単純にxlsファイルを開くつもりなんですね。
-----------コマンドプロンプトの基本ルール--------------------
・その1
コマンドは正確に入力。
・その2
パスが複数存在するときは半角スペースで間を空ける。
・その3
パスでスペース入りのパスが存在する場合はダブルクォーテーションで囲む。
・その4
レジストリ操作の場合は慎重に入力&実行前に3回ぐらい、見直し必須。
---------------------------------------------------------------------
とこれ、全部、覚えとくように実際にやって体感するのが早いかも?
あと、その4をやるときはパソコン1台ぐらい再起不能にするぐらいの覚悟を持って行った方がいいかも。
で、素人さん、出来ない出来ないと言うから「本当に?」と疑いつつ作って見ました。
今後、自分の力でコーティングできるようになってくださいね。
Private Sub CommandButton1_Click()
Dim ws As Object
Dim DeskTopPath As String
Dim ProcessID As Long
Set ws = CreateObject("WScript.Shell")
DeskTopPath = ws.SpecialFolders("Desktop")
MsgBox (DeskTopPath)
ProcessID = Shell("Excel " & """" & DeskTopPath & "\Samples.xls" & """", vbNormalFocus)
End Sub
マグさんへ
>Private Sub CommandButton1_Click()
>Dim ws As Object
>Dim DeskTopPath As String
>Dim ProcessID As Long
>Set ws = CreateObject("WScript.Shell")
>DeskTopPath = ws.SpecialFolders("Desktop")
>MsgBox (DeskTopPath)
>ProcessID = Shell("Excel " & """" & DeskTopPath & "\Samples.xls" >& """", vbNormalFocus)
>End Sub
以上は動くのですが
Private Sub CommandButton11_Click()
Dim DeskTopPath As String
Dim ProcessID As Long
Set ws = CreateObject("WScript.Shell")
DeskTopPath = ws.SpecialFolders("Desktop")
MsgBox (DeskTopPath)
ProcessID = Shell("automouse.exe " & """" & DeskTopPath & "\入力.amo" & """", vbNormalFocus)
End Sub
とすると ファイルが見付かりませんのエラーになります
どこがまずいのでしょうか
宜しくお願い致します。
初心さんKGさんまぐさんありがとうございます
>ソフト名はわかりませんが次の例のようにソフト
>までのパスを記入してみてください。
等で出来ました。
約1カ月の苦悩から開放されました。
感謝!!!
ツイート | ![]() |