• ベストアンサー

ExcelVBA 他のアプリケーションを開く

こんにちは! 今、エクセルシート上に色々なファイルの絶対パス一覧があるのですが 絶対パスをダブルクリックするとその指定されているファイルを開くことが出来る・・・ということがやりたいです Shellを使うことを考えたのですが、ファイルをどのアプリケーションで開くかを指定しなければならなそうです エクセルファイルだけ、というわけではないので、この様な場合はどうしたらよいでしょうか? ちなみに開きたいファイルは、Excel、Word、PDF、画像ファイルです

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

Windows Scripting Hostを使用すれば拡張子の関連づけでAPを起動することが可能です。以下のサンプルを参考にしてください。 (ダブルクリックされたセルのファイルを実行するマクロです。ただしファイル名は z:\Sample.pdf のようにフルパスで記述されている前提で書きました。パス名がない場合はパス名を編集して追記してください) Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim flName As String, WSH  Set WSH = CreateObject("WScript.Shell")  If TypeName(Target) = "Range" Then   flName = Target.Value   WSH.Run flName  End If End Sub

jobvba
質問者

お礼

すばやい回答ありがとうございます! これでやってみます!ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelのアプリケーションとしての奇妙な問題

    Excel2003を使ってるんですが、アプリケーションとしての問題で困ってます。ちょっと分かりにくい書き方しか出来ないのですが、必要なら補足を入れます。 例えばデスクトップに、(1)Excelアプリケーションそのものへのショートカットと、(2)「ブック1.xls」というExcelファイル があるとします。(2)をダブルクリックして開くと、次のような現象が生じることがあります。 ○シートを削除するとか、シート内容が変更されてる状態で「ctrl+W」でウインドウを閉じる などの操作をしたときに、確認メッセージが出されてくれない。確認なしにそのままシートが削除されたり、保存されずウインドウが閉じられたりする。 ○(2)のファイルにマクロが組み込んであって、その中で「Application.ScreenUpdating=false」文を入れて描画省略させるようにしていても、描画が実行されてしまう。 (1)をダブルクリックして開いておいて、そこに(2)のファイルをドラッグして開くとか「ctrl+O」から開くとかすれば、通常のExcelファイルと同様、こんな現象は生じません。なんか、(1)をダブルクリックして開いたときと(2)をダブルクリックして開いたときとでは、Excelのアプリケーションの性質が異なるものになってしまっているようです。(2)をダブルクリックしたときは、個人用ブック「personal.xls」も開かれていないようです。 私はExcelファイルは、(2)をダブルクリックする方法でいつも開きたいし、そのときに上記の現象が生じないようにしたいです。 原因として考えられるのは、パッケージソフトとかを使ったときに妙な情報がExcelに書き込まれたのだと思います。たとえば ○Excel2003のツールバーをカスタマイズしまくるマクロを組み込んだExcelファイルを、業務でたまに使うのですが、同ファイルを使ったあとは上記の現象が生じることがあります。 ○ExcelやAccessみたいな表が画面に表示されるツールがあり、そのツールにはExcel出力機能があります。ファイル名を指定してExcelファイルを保存するんじゃなくて、その場で名無しのExcelファイルを新規出力する機能です。しかしそのツール、たとえば「ブック1.xls」を既に開いてる状態でExcel出力機能を実行すると、「ブック1.xls」とは別アプリケーションとして名無しのExcelブックが表示されます。その別アプリケーションExcelファイルと同ウインドウ内で他のExcelファイルを開くと、どうもそのExcelファイルについて上記の現象が生じるっぽいです。 分かりにくくて難しい問題だと思いますが、どうかよろしくお願いいたします。

  • ExcelVBA 他のアプリケーションを開く2

    こんにちは! これは、セルに書いてあるファイルの絶対パスを読み取り、そのファイルを開くというマクロです(前に質問した時の回答抜粋です) Set WSH = CreateObject("WScript.Shell") If TypeName(Target) = "Range" Then flName = Target.Value WSH.Run flName ・・・(1) End If (1)の部分で、ファイルの絶対パスに空白が含まれる場合、エラーになって開けません・・・(Documents and Settingsのように) 回避する方法はないでしょうか?

  • EXCEL VBA で他のアプリケーションを開く方法について

    EXCEL VBAで他のアプリケーションを開く方法について教えていただきたいことがあります。 現在開いているエクセルのブックと同じフォルダにある、"AAA"という名称のsqc形式のファイル(EAST社のSkyLink Ver9.0のコマンドファイルです)をVBAで開く。 SHELL関数で開くと思っていたのですが、 Sub Test() Dim MyPath As String, MyTask As Double MyPath = ActiveWorkbook.Path & "\" MyTask = Shell(MyPath & "AAA.sqc") SendKeys "%FO", True End Sub とすると 「プロシージャの呼び出し、または引数が不正です」 というメッセージが出てしまいます。 如何せんSHELL関数を使うのが初めてでして、色々調べても どうしても解決策にたどり着きません。 どうぞよろしくお願いいたします。

  • 「他のアプリケーションで開く」で開いてしまいました…

    windowsの独特のマーク(表現が下手でごめんなさい。多分プログラムファイルだと思います)のファイル(拡張子は不明。ファイル名だけ表示)をダブルクリックしたら「このファイルは開けません」という表示が出て、「一覧から選ぶ」をOKし、エクセルを選び(「このファイルを使うときは選択したプログラムをいつもつかう」のチェックボックスにチェックされていたと思います)開いたところ、ファイルの柄が変わってしまいました…(エクセル柄)。拡張子はdbgになっています。 どうしたら元に戻すことができるでしょうか…。それともエクセル柄になっただけで、影響はないのでしょうか?

  • エクセル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の記述があるなら、詳しくではなく、参考程度に教えて頂けると、とても嬉しいです。 頭の悪い質問だと思いますが、是非ともアドバイス、宜しくお願いします。

  • アプリケーションは自分のパスをどこに保存するのか?

    ファイルを読み込むアプリケーションを作成しているのですが、その際にファイルを相対パスで指定しています。 アプリケーションは自分の絶対パスを知らないと相対パスを指定出来ないと思うのですが、アプリケーションはどこにどのような形で自分の絶対パスを保存しているのでしょうか? プログラムで絶対パスの取得は出来ているのですが、取得した絶対パスを細工して保存してる変数に代入してパスを偽装したいのです

  • Excelの関連付けがおかしい???

    Win98SE、Office2000がインストールされているPC環境で 訳あってExcel95を起動させました。 その後、Excelファイル(.xls)をダブルクリックするとExcel95が起動するようになりました。 拡張子の関連付けを確認したところ、Excel95が起動するように 変更されていました。 Excel95はマクロを走らせる為だけにしか使用しないのでExcel2000で起動するように関連付けを変更しました。 その後、ExcelファイルをダブルクリックでExcel2000が起動するように なったんですが、一回の実行でExcelファイルが2回開くようになったので、 「ファイルの種類」のExcelワークシートの内容を変更しようと 思ったところ、「ファイルの種類」の中にあった「Microsoft Excelワークシート」 がなくなってしまいました。 新たに「xls」ファイルを関連付けさせようと思い、追加しようとすると 「拡張子".xls"は既にファイルの種類'Excel.Sheet.5'で使用しています。他の拡張子を洗濯してください」 とエラーが出ます。 しかし、「ファイルの種類」の中には"Excel.Sheet.5"というものは存在していません。 無理矢理ですがExcelファイルを選択し、Shift+右クリック→アプリケーションから開くを選択し、 Excel2000を選び、"この種類のファイルを・・・・・" にチェックしてみたところ、今度はExcelファイルをダブルクリックで開くと 毎回Excelのアプリケーションが立ち上がります。 「ファイルの種類」の中から消えた「Microsoft Excelワークシート」は復元できない(されない) 又は作成できないんでしょうか? ".xls"が関連付けされている「Excel.Sheet.5」はどこにあるのか。 Excelアプリケーションがファイルを開くたびに毎回立ち上がるが 一度開いたらそのアプリで開くようにするにはどうすればいいのでしょうか。

  • safariでリンクをアプリケーションで直接開くには

    MacでSafariを使い始めたのですが(購入したばかりなのでOSもsafariも最新です)、ハイパーリンクがexcelやopenoffice (あるいはneooffice)などのファイル場合、リンクをクリックするとそのファイルを直接アプリケーションを使って開くのではなく、ダウンロードフォルダにダウンロードしてしまいます。そのダウンロードされたファイルをダブルクリックすれば適切なアプリケーションで開くことができるのですが、これだと2 stepの作業になってしまうので、できれば、リンクをクリックするだけでファイルが適切なアプリケーションで開きたいのですが、これは可能でしょうか? pdfやjpegなどは直接開けます。また前述のように、ダウンロードされたファイルは問題なく開けますので、OSはどの拡張子のファイルをどのアプリケーションで開くかというのは知っているはずです。 ファイルを直接開かない、というのは安全上の配慮なのかなとも思うのですが、それならばjpegと同じように.xlsのファイルは直接開いてもよい、というような設定ができるといいと思うのですが。 以上よろしくお願いいたします。

    • ベストアンサー
    • Mac
  • アプリケーション作成での質問

     現在あるソフトを作成しています。  なかなか専門的な用語が分からず、インターネットでどう検索してよいかわからなかったのでこちらで質問しました。 開発環境はWindows7、VisualStudioを用い、C#言語で開発しています。  今までのプログラムの実行方法は、統合開発環境を経由して実行したことしか経験がありません。ビルドした時に作成される「.exe」ファイルをクリックして実行したことはありますが、基本的に統合開発環境の「実行」でプログラムを実行しています。  そこで、1つ目の質問なのですが自分のプログラムを「アプリケーション」として動かすにはどうすれば良いのでしょうか?  普通ソフトはアプリケーションとして存在していて、それをダブルクリックなりタスクバーから選択するなりして実行します。そのようなアプリケーションとして自分のプログラムを実行するにはどうすれば良いのでしょうか?ビルドした時に作成される「.exe」ファイルをそのままアプリのように使っていると「.exe」ファイルのみを別の場所に移した時に参照しているファイルのパスがおかしくなってしまいます。今のところ「パッケージ化」というものをしたらいいのかな?というところまでは分かってきているのですが、この解釈が正しいのかどうかあまり自信がないです。  2つ目の質問は、Wordのように書類を扱うアプリケーションについてです。自分の解釈としては、Wordの書類をダブルクリックすると、拡張子を見ることで「Wordを用いる」という情報がわかり、OSがWordを実行する。Word側はどのファイルが開かれたのか(パスなのかな?)を受け取り、そのファイルを解析し、画面に書類を表示する。このような流れなのだろうと思っています。  しかし、このような流れの実行方法を自分で作成するにはどのようなことをしなくてはならないのでしょうか?また、このような流れで実行できるアプリケーションを何と呼ぶのでしょうか?用語がわからず調べようがない状態なんです(>_<)  例えば「~.bir」というファイルの中に日付を入力します。 そして、そのファイルをダブルクリックするとアプリケーションが実行されて、ファイルの中の日付が画面に表示される。このようなアプリケーションを試しに作ってみたいのですが...  自分の想像では... 「.bir」はどのアプリケーションの拡張子なのかをOS側に設定しておく必要がある。 アプリケーション側で「.bir」ファイルをダブルクリックした時にパスを受け取る仕組みを作っておく必要がある。  この2つがハードルなのかなぁと思っているのですがよくわからないのが現状です。  なお、現在作っているソフトは自分のPCだけで動けば良いものではなく、他のパソコンにも配布できるような形にしたいと思っています。インストーラなんかを作る形になるのでしょうがそこらへんも含めて全く知識がない状態です。  あまり用語を知らないので分かり易く説明できていないでしょうが回答お願いします。  長文失礼しました><

  • Excelのハイパーリンクで,別Excelのシート

    Excelのハイパーリンクについて, リンク先をこのドキュメント内だとsheetまで指定できますが, 別のExcelをリンク先にする場合,ファイルweb別ページだと sheetまで指定できません。 Excel一覧表Aと,それそれsheetでまとめたExcel Bと2つ作り, 一覧表のリンクをクリックすると,詳細はExcel Bのsheet1・sheet2・・・が 表示されるようにしたいです。 可能であれば,教えてください。よろしくお願いします。

専門家に質問してみよう