• 締切済み

shell関数を使いアプリがない場合の処理方法

shell関数で、アプリケーションを読み込むことをさせてますが、書かれているパスにアプリがない場合に、どのような例外処理を書き込めよいでしょうか。 よろしくご教授のほど、お願いします。 (理想としては、「アプリがありません。選択して下さい」というメッセージで、参照ボタンみたいな感じで選べるとうれしいです。)

みんなの回答

回答No.3

No2の方が書かれているように、Dirでそのアプリが存在するかどうかを 判断すれば良いのでは? if Dir(アプリのパス)= "" then msgbox "アプリがありません。選択して下さい" exit sub else shell ~ end if というような感じでしょうか。 すみません、私はかなりの初心者なのでこれくらいしか 分かりませんでした。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 エラートラップ以外では、Shell関数の前にファイルの存在チェックをするという方法もあります。(Dir関数とかAPIで) もっとも、最初から参照ボタンでファイルを開くダイアログを出して、実行ファイルを選択してもらえばいいような気がしますが。 では。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

Shellで起動しようとしたアプリが無いときにエラーにならないようにするには、 1.エラートラップを使う。 On Error Go To トラップ名 2.エラーを無視する。 On Error Resume Next で、エラーを処理する必要があります。 Err.Numberの値を調べ、ファイルが見つからないエラーかどうかをチェックします。 アプリの選択はこのタイミングではなく、最初にアプリケーションを選んでもらうときに選択させるべきでは? それで、起動に失敗したら”もう一度選んでください”とかいうメッセージを出しておしまいにするのがいいのでは?

関連するQ&A

  • Shell関数について

    知恵を貸してください。 今Shell関数を使ってあるアプリケーションを実行しています。実行失敗したら警告をだすとのアクションを取りたいです。 ところでShell関数のヘルプを見ると実行失敗したら’0’を返すとのことですが、 実際、実行するアプリケーションのパスを変えるなどにして、テストしてみたらその結果は(Shell関数の戻り値)は’0’ではないです。 これはどういうことでしょうか? どなたか教えてください。

  • エクセルVBAで使うShell関数について

    現在、初心者ながらもエクセルを使って動画や音楽を検索して再生するソフトを作っています。 指定したファイルを、指定したアプリケーションで起動して開きたいと思い、ネットを使って調べたら2つの異なるShellの書き方で動かす方法が見つかりました。 2つのShell関数は同じものなのか教えて下さい。 (1) ret = Shell(Winamp_Path & "winamp.exe /ADD " & """" & Path) と、言う Shell(アプリケーションのフルパス/ADD""ファイルのフルパス) と書いてファイルをアプリケーションで開く方法。 (2) Call Shell(Path & oFile, vbNormalFocus) と、言う Shell(アプリケーションのフルパス, 起動時のウィンドウの状態) と書いてアプリケーションを起動する方法。 この2つは同じ種類のShell関数なのでしょうか。 (1)は、ファイルも一種のアプリケーションとして扱われているんでしょうか。 (2)がShell関数の基本型のようですが、(1)のような書き方が見つかってからは、他にも違う書き方があるかと思うと気になって仕方無いです。 使い方の違いは分かったのですが、調べても(2)の使い方や、別の関数や言語、APIを使ったアプリケーションの書き方しか見つからず、 エクセル2007VBのヘルプを見ても(2)の使い方しか見つからず、 Googleで、「エクセル Shell関数」と調べても、2つの違いが書かれている所が見つからなかったので質問しました。 ※この2つと違う、アプリケーションを起動するShellの記述があるなら、詳しくではなく、参考程度に教えて頂けると、とても嬉しいです。 頭の悪い質問だと思いますが、是非ともアドバイス、宜しくお願いします。

  • Access Shell関数について質問です。

    Access Shell関数について質問です。 AccessVBA でボタンをクリック時に画像を表示させたいと考えています。 クリック時にデフォルトの画像ソフトを起動させて表示しようと思っています。 たしか、Shell関数を使用すれば使えたと思うのですが、 パラメーターの入れ方を忘れてしまいました。 指定アプリケーションは使用環境によって違う為、出来ればデフォルトで 各環境のデフォルト設定の写真ビューワーを呼び出したいと考えています。 私の記憶が間違っているかもしれないので、Shell関数以外も含めて、 どなたかご存知の方アドバイスよろしくお願いいたします。

  • Shell関数内で変数を使うことについて

    お世話になります。 MicrosoftのサイトやAccessVBAのヘルプ、各種掲示板を拝見してもぴったりくるものが見つからなかったので教えていただきたく思います。 AccessVBAからExcelファイルを開きたいと思っています。 コマンドボタンウィザードを参考にして、 Call Shell("Excel.exe フルパス"vbMaximizedFocus)としました。 フルパスは変数を使用しております。 変数は2つの変数と&で結んだ文字列で構成されています。内容は以下の通りです。 MyCurrent & "\" & MyFile & ".xls" (MyFile = InputBox("保存したいファイル名を入力できます。", "ファイル名)、MyCurrent = Application.GetOption("Default Database Directory")を意味します。InputBoxでユーザーにファイル名を決定してもらい、既定のデータベースフォルダにそれを保存させます。) MyCurrentの中身は私のPCの場合はC:\Documents and Settings\●\デスクトップです(●=私の名前。スペースなし)。 ここで問題なのですが、Micorsoftのサイトによると、Shell関数内で半角スペースを含むフルパスやファイル名を記述すると、うまくいかないので"(ダブルコーテーション)を入力する必要があるとありました。 変数ではなく、普通にフルパスを入力する際には"を記述してファイルを開くことができたのですが、変数の場合それをどのようにしたら良いのかわからないのです。 変数そのものには半角スペースがなくても、変数の中身に半角スペースが存在する場合はその半角スペースをどのように回避したらよいのでしょうか? もしかして、変数の中身にあった場合は駄目なのでしょうか? 長文で申し訳ありませんが、よろしくお願いいたします。

  • 秀丸とGui-shell

    platex2e for Windows Another Manual Vol.1 Basic Kit 1999 第14刷 を購入し、早速インストールしてみたのですが、 秀丸から 「現在のファイルをTeXで処理」 を選択すると guishellを開けませんでした。 各種実行プログラムの格納されているディレクトリにはPATHを通しておく必要があります。 とメッセージが出てきます。 同様に 「現在のファイルをプレビュー」 を選択しても 同じようなエラーメッセージが出てきます。 10年ほど前にインストールしたときには特に設定することなく 秀丸とGui-shellやdvioutがつながったと思うのですが 何か設定しなくてはいけないのでしょうか?

  • vb プログラムの起動と例外処理

    はじめまして プログラムの実行と例外処理に関して質問させていただきます。 現在,visual basic2005でプログラム(A)からvbで作成した別のプログラム(B)に引数を指定してから起動し,別のプログラム(B)が例外処理に関する方法を調べています。 プログラム(B)起動時に例外処理を用い,以下のようなエラーメッセージを表示させるにはどういった処理を構成すればよいでしょうか。 パス名が設定されていない場合,”ファイルのパス名が見つかりませんでした” 引数が指定されていない場合,”引数が指定されておりません” 原因が特定できないエラーが発生した場合,”原因不明のエラーが発生しました” プログラムの実行にはShellメソッドとSystem.Diagnostics.ProcessクラスのStartメソッドがあるという事がわかりましたが,上記2つのメソッドが自分の意図したい操作に適しているかまでは理解におよんでおりません。 まだプログラミングを始めたばかりという事もあり,右も左もわかりませんが,ご教授お願い致します。

  • androidアプリのアップデート方法

    自作アプリをGoogle play(旧アンドロイドマーケット)で公開しており、こんど修正版にアップデートしようとしているのですができません。 「アプリケーションをアップロード」を選ぶと「同名アプリが既に存在するので該当のアプリに移動して"アップグレード"を選択して下さい」というようなメッセージがでるのですが、該当のアプリを選択してもどこにも「アップグレード」っぽいボタンやリンクが見当たりません。 何かすごく単純なことを見逃しているような気もするのですが、途方に暮れています。 アップグレード方法をご存知の方いらっしゃいましたら教えて下さい。

  • 起動アプリのチェック

    Windows2000(SP2) VisualBasic6.0(SP5) で開発しています。 複数のアプリがあります。 その中の一つは、ボタンばかりのアプリで、ボタン押下により、該当するアプリを Shellで起動しています。 このボタンを制御して、どれか一つでもアプリ起動中ならば、ボタンは押せない様 にして、アプリが一つも起動されていなければ、ボタンが押せるようにしたいと考 えています。 どのように処理したら良いのか分からず困っています。 良い方法がありましたら教えてください。 よろしくお願いします。

  • C# の例外処理について

    こんにちは。 C#の例外処理について質問させてください。 ある関数の内部において、一般的な例外をユーザー定義の例外に変えて投げ、 この関数の利用者には必ずそのユーザー定義の例外を処理するよう強制したいと思っています。 しかし、C#で関数の利用者に例外処理を強制させる方法が見つかりません。 そもそも、関数の利用者からは、その関数でどのようなユーザー定義の例外が投げられるかすらわからないように思います。 正しくcatchするには関数の中身を追うしかない?と疑問に思っています。 C#ではこのような場合、どうするのが一般的なのでしょうか? Javaでは例外処理の強制は簡単なので、構文が似てるだけに不思議に思っています。 基本的な仕様の見落としだったら申し訳ありませんが、よろしくお願いいたします。

  • PHPの画像処理関数

    PHPの imagecopyresized() 関数を使って、デジタルカメラで撮影した写真のサムネイルを作ろうとしています。 2000 x 1500 ドットぐらいの大きさまでは出来るのですが、高解像度のものは「元の画像が大きすぎて処理できない」旨のエラーメッセージが出てきます。 この関数で処理できる解像度を引き上げる方法はないものでしょうか? 詳しい方、どうぞ宜しくご教授お願いいたします。

    • ベストアンサー
    • PHP