• ベストアンサー

エクセルで電卓表示

いろいろネット検索して下記の記述で電卓が呼び出せるのはわかりました。 Sub 電卓呼び出し() x = Shell("C:\WINNT\system32\calc.exe") End Sub ただ、この記述だと、calc.exeのある場所が限定されてしまい、そこになければエラーになります。 calc.exeを検索して呼び出すためにはどのように書き換えればいいのでしょうか? それから x = Shell の意味を教えていただけると幸いです。

  • moooon
  • お礼率70% (118/167)

質問者が選んだベストアンサー

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

標準のWindowsですと、calcのあるディレクトリにパスが通っているので、 Sub 電卓呼び出し() x = Shell("calc.exe") End Sub で良いのでは? 検索するって意味だと、OSが勝手に検索してくれているんですが。 > calc.exeを検索して呼び出すためには calc.exeがインストールされておらず、無かった場合にはどうお考えですか? 毎回HDDの中からファイルを検索すると鬱陶しいのでは? どうしても必要ならば、bookと同じ場所に置いておくとか。(再配布の可否があるので、オンラインソフトの方が良いですが。) -- > x = Shell Shellのヘルプによると、 | 実行可能プログラムを実行し、実行が完了するとプログラムのタスク ID を示すバリアント型 (内部処理形式 Double の Variant) の値を返します。プログラムの実行に問題が発生した場合は、0 を返します。 との事です。 xが0なら失敗。という事になります。

moooon
質問者

お礼

さっそくありがとうございます。OSが勝手に検索してくれているんですか!すごい。 calc.exeが無かった場合のためには下記のような書き方でいいでしょうか? Sub 電卓呼び出し() On Error Resume Next x = Shell("calc.exe") If x = 0 Then MsgBox "ありません" End Sub

その他の回答 (2)

回答No.3

> calc.exeが無かった場合のためには下記のような書き方でいいでしょうか? Sub 電卓呼び出し() On Error GoTo mg x = Shell("calc.exe") mg: MsgBox "ありません" End Sub でもいいですね。

moooon
質問者

お礼

なるほど、On Error GoToですね。 この方がすっきりしますね。 ありがとうございました。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

> calc.exeが無かった場合のためには下記のような書き方でいいでしょうか? 「calc.exe」の代わりに、実施にありえないファイル「ほげほげ.exe」などを指定してみてください。 私の環境Win2000+Excel2000ではOKでした。

moooon
質問者

お礼

なるほど、そうやって試せばいいんですね!! ありがとうございました。

関連するQ&A

  • エクセルVBAで出した電卓をVBAで終了したい。

    先ほどこちらで以下のすばらしいマクロを教わりました。 Sub my電卓() On Error GoTo mg x = Shell("calc.exe") Exit Sub mg: MsgBox "ごめん、電卓が" _ + Chr(&HD) + Chr(&HA) + "探せない・・・", vbExcritical, "(^^;)" End Sub それで、ワークシートに配置したアイコンをクリックすると電卓が出るのですが、電卓が出ているときに再度アイコンをクリックすると電卓が最小化され、さらにクリックすると二つ目の電卓が出てしまいます。 電卓がでている状態でクリックしたら電卓を終了するようにしたいのですがどのように変えればいいのでしょうか?

  • VB6.0 SHELLで起動したプログラムを終了さしたいのですが

    (1)メインプログラムから電卓を実行します。  Shell("C:\WINNT\system32\CALC.EXE", 1) (2)メインプログラムで電卓を終了させるにわ、どうすればいいのですか  教えてください。

  • ダブルコーテーションで3度も囲ってるのですが

    vbsで電卓を起動する時 Set objWshShell = WScript.CreateObject("WScript.Shell") objWshShell.Run """CALC.EXE""" のように、CALC.EXEをダブルコーテーションで3度も囲ってるのですがなんででしょうか? VBAの場合は Sub test() Dim i As Long i = Shell("CALC.EXE") End Sub のように3重には囲わなくても起動します。

  • 電卓の格納場所は

    電卓の格納場所は %SystemRoot%\System32\calc.exe となっております。 この”%SystemRoot% ”はどんな意味なのでしょうか? OSはWinXP pro

  • EXCELをもう一つ立ち上げたい

    マクロを使用して sub 関数1 shell "C:\Program Files\Microsoft Office\Office\EXCEL.EXE", 1 end sub と記述すれば EXCELがもう一つたちあがります。 また、 sub 関数2 Workbooks.Open FileName:="C:\MyDocuments\aa.xls" end sub と記述すればMyDocments配下のaa.xls というファイルがたちあがります。 そこで、ここから本題なのですが、 aa.xlsというEXCELファイルをもう一つのEXCELに立ちげる方法を教えて頂けませんでしょうか? よろしくお願いします。

  • 電卓が起動できない

    いつもお世話になっております。 昨日Cドライブのディスクのクリーンアップを行ってから、 電卓を使うことが出来なくなってしまいました。 直そうと思って行ったこととして、 C:\WINDOWS\system32\の中のcalc.exe が圧縮され青文字になっていたので、 「属性の詳細設定」画面で 「内容を圧縮してディスク領域を節約する」のチェックを はずしました。 その後、cacls.exeのショートカットを デスクトップに作成したのですが クリックしても何も画面が開かない状態です。 このあと、どうしたらまた電卓を使えるようになるでしょうか? お分かりになる方、宜しくお願いいたします。

  • ACCESS マクロをモジュールに変換した後の実行

    こんにちは。 ACCESS 97 を独学で学んでいます。 初歩の初歩だと思うんですが、教えてください。 マクロ作成の例題で、電卓を起動するというのがありました。 アプリケーションの実行-電卓を開く コマンドライン-CALC.EXE とし、保存して閉じて、実行すると電卓が起動します。 そのマクロを、 ツール-マクロ-マクロをVBに変換 とすると、下記のようにモジュールに変換されます。 Option Compare Database Option Explicit '------------------------------------------------- ' マクロ1 '------------------------------------------------- Function マクロ1() Call Shell("CALC.EXE", 1) End Function このモジュールを「デザイン」で開いて、「開始」等で実行することは出来ますが、開いていないときには「実行」ボタンがグレイアウトしています。 閉じた状態で「実行」するのって、どうするんですか?

  • エクセルVBAでPDFを開く

    以下のような記述でアクロバットリーダーは立ち上がるのですが、 「この文書を開くときにエラーが発生しました。このファイルが見つかりません」 と出てきてしまいます。 どのようにしたら開いてくれるのでしょうか? Sub test3() Dim P As String P = "\\C:\AAA\sample.PDF" Shell "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe" & " " & P, vbNormalFocus End Sub

  • エクセル VBA フォルダを閉じる

    いつもお世話になっております。 下記のプロシージャでフォルダを開いているのですが、このフォルダを閉じる場合はどのように記述すればよろしいのでしょうか? よろしくお願いいたします。 Sub opn_fld() Dim myFol As String, mymsg As Integer Dim IE As Object myFol = "C:\ABC\" Shell "C:\Windows\Explorer.exe " & myFol, vbNormalFocus End Sub

  • EXCEL ツールバーを非表示にするには(VBA)

    EXCELを開いた時、ツールバー(standerd)が見えないように(非表示)したいのですが、わかりません。 VBAで下記のように記述するとエラーが返ります。 Private Sub Workbook_Open() CommandBars(3).Visible = False End Sub 教えて頂けると幸いです。

専門家に質問してみよう