痔になりやすい生活習慣とは?

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/13 11:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL 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関数を使うのが初めてでして、色々調べても
どうしても解決策にたどり着きません。
どうぞよろしくお願いいたします。

Aベストアンサー

こんにちは。

>SHELL関数で開くと思っていたのですが、

たぶん、読み違えたのだと思います。Shell でファイルを開くというのは、全部で3つの種類があります。それぞれ使い方が違います。ご質問に書かれているShell は、Excelの内部から呼び出す、つまり、Excelの配下からの呼び出しですから、ファイル名を指定しても、それを起動するソフトは分かりません。

一旦、Excelから降りてあげないといけないのですが、しかし、その方法が、通常2つの種類あります。ひとつは、Win OSからと、コマンドラインからと二種類あります。(厳密には、Win32APIなど、後二つあります。)

使いやすい方法は以下の方法ですが、拡張子が登録していることと、OS によって、その挙動が変わるはです。若干、エキスプローラからクリックしたものとは違うようです。

'-------------------------------------------

Sub TestSehll_1()
  Dim objSh As Object
  Dim myPath As String
  Dim fn As String
  '-------------------------------------------
  fn = "AAA.sqc"
  myPath = ActiveWorkbook.Path & "\" & fn
  '-------------------------------------------
  If Dir(fn) = "" Then
    MsgBox "ファイルがありません。", 48
    Exit Sub
  End If
  With CreateObject("Shell.Application")
    .ShellExecute myPath
  End With
  ''SendKeys "%FO", True 'これは、どうかな?
End Sub

なお、SkyLink というソフトの仕様を読んでみないけれども、検索すると、そのソフト名と同時に、Excel マクロという名前が出てきます。もしも、オートメーションを想定したソフトである場合は、このように外部から動かそうとはせずに、もっと確実な方法があるかもしれません。

こんにちは。

>SHELL関数で開くと思っていたのですが、

たぶん、読み違えたのだと思います。Shell でファイルを開くというのは、全部で3つの種類があります。それぞれ使い方が違います。ご質問に書かれているShell は、Excelの内部から呼び出す、つまり、Excelの配下からの呼び出しですから、ファイル名を指定しても、それを起動するソフトは分かりません。

一旦、Excelから降りてあげないといけないのですが、しかし、その方法が、通常2つの種類あります。ひとつは、Win OSからと、コマンドラインからと...続きを読む

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub

QVBAからファイルをセル入力から開く方法

VBAからファイルをセル入力から開く方法

だれかご教授頂けませんでしょうか?VBAからエクセルファイルを開こうとしています。
そこでシート1のA1セルにファイル名を記述してあり、そのファイル名からファイルを開く事は出来ますでしょうか?
何か良い方法がありましたら教えて頂きたいのですが。

Aベストアンサー

下記で試してください。
パス名の最後には\を付けるようにしてください。

Workbooks.Open "D:\ABC\" & Sheets("シート1").Range("A1").Value


ワークシートのイベントを使う方法も考えられると思います。
BeforeDoubleClickイベント辺りを使って
ファイル名セルをダブルクリックすれば

Excel(エクセル) VBA入門:ワークシートのイベント
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html

QエクセルVBAで、PDFファイルを開きたい

セルに入力した値のブック(xls)を開く場合、
以下となりますが、↓

Sub セルに入力したブック名のブックを開く()
ブック名 = Cells(1, 2) 'B1セルの値を取り出す
Workbooks.Open Filename:=ブック名 & ".xls" '指定されたブックを開く
End Sub


これでPDFファイルを開きたいです。
記述をどうしたらよいでしょうか。
目的はPDFファイルの検索/照会をxlsにてしたいのです。
お手数ですがお願いいたします。

Aベストアンサー

案1
ハイパーリンクにしてしまう。

案2
PDFファイルへのフルパスが、B列に記述してある
拡張子PDFへの関連付けがAcrobat Reader にしてある
と仮定して
ワークシートのイベントに

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If InStr(Target.Value, "pdf") > 0 Then
  Call Shell("explorer.exe " & Target.Value)
  Cancel = True '編集モードキャンセル
End If
End Sub
とか?

PDFファイルが一箇所にまとまっているのなら
標準モジュールに
Sub test2()
Dim strFilePath As String
strFilePath = _
  Application.GetOpenFilename _
  ("PDFファイル,*.pdf", MultiSelect:=False)

If strFilePath = "false" Then
 Exit Sub
End If

Call Shell("explorer.exe " & strFilePath)

End Sub
でも?
ということかな?

案1
ハイパーリンクにしてしまう。

案2
PDFファイルへのフルパスが、B列に記述してある
拡張子PDFへの関連付けがAcrobat Reader にしてある
と仮定して
ワークシートのイベントに

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If InStr(Target.Value, "pdf") > 0 Then
  Call Shell("explorer.exe " & Target.Value)
  Cancel = True '編集モードキャンセル
End If
End Sub
とか?

PDFファイルが一箇所にまとまっているのなら
標準モジュー...続きを読む

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

QEXCEL VBAから他アプリケーションを操作することは可能ですか?

こんばんは。

VBAの本を購入し勉強していますが、VBAと他アプリケーションとの連携について記載が少なく(txtやcsvファイル操作)、どこまで出来るんだろうという不安があり質問しました。

(1)EXCEL VBAから他アプリケーションを起動し、設定操作、命令を送り操作することは可能でしょうか?
イメージとしては他アプリに一方的に命令を送り操作できれば良しです。(アプリ側からのリターン要求はしません。)

(2)第2の質問です。
VBAで他アプリを起動した状態で人が操作している感覚でマウスを操作できますか?(利用方法:他アプリの●ボタンを押したい!!)
目の前にソフトがあるのに触る操作は出来ないものでしょうか?
いろいろ調べて見ましたが、この様な事例はありません。
駄目元ですが、こんな操作を知っていましたら教えてください。
こんな操作ができればいいな~

Aベストアンサー

#2,4 です。

> EXCEL2000内の特定のセルに規定値外のデータが入力された場合に
> UWSCを起動して...

UWSC のスクリプトが完成しているとすれば、起動オプション付きで
バッチ処理すれば良いでしょう。実行タイミングは、シートまたは
ThisWorkbook の Change イベントが使えます。

例)シートモジュール

Private Const EXE_PATHNAME As String = "C:\Program Files\uwsc\uwsc.exe"
Private Const DQ      As String = """"

Private Sub Worksheet_Change(ByVal Target As Range)

  Dim rChange   As Range
  Dim sCommand  As String
  Dim sScriptFile As String

  ' // 実行する UWSC スクリプト
  sScriptFile = "C:\sample.uws"
  ' // UWSC の起動オプションは UWSC のヘルプを参照
  sCommand = DQ & EXE_PATHNAME & DQ & " " & _
        DQ & sScriptFile & DQ
  
  ' // 変更されたのが単一セルかつ A 列でなければ終了
  If Target.Cells.Count > 1 Then Exit Sub
  Set rChange = Intersect(Target, Columns("A"))
  If rChange Is Nothing Then
    Exit Sub
  End If
  
  ' // さらに値が TEST だった場合のみ実行
  If rChange.Value = "TEST" Then
    Shell sCommand, vbNormalFocus
  End If

End Sub

#2,4 です。

> EXCEL2000内の特定のセルに規定値外のデータが入力された場合に
> UWSCを起動して...

UWSC のスクリプトが完成しているとすれば、起動オプション付きで
バッチ処理すれば良いでしょう。実行タイミングは、シートまたは
ThisWorkbook の Change イベントが使えます。

例)シートモジュール

Private Const EXE_PATHNAME As String = "C:\Program Files\uwsc\uwsc.exe"
Private Const DQ      As String = """"

Private Sub Worksheet_Change(ByVal Target As Range)

  ...続きを読む

Qエクセルマクロでpdfファイルを開きたい

エクセルでpdfファイル名が記載されたセルを選択して、マクロでそのpdfファイルを開きたいと思うのですがうまくいかず困っています。

Shell関数でアクロバットリーダーを立ち上げることはできます。
またアクロバットリーダーで、一度pdfファイルを読み込むと、「ファイルを開く」ダイアログの「ファイルの場所」にpdfが保存されているフォルダが記憶されているので、SendKeysでpdfファイル名を使用すれば、マクロでpdfファイルを開くことはできます。

問題は、アクロバットリーダーが立ち上がった時に、「ファイルを開く」ダイアログの「ファイルの場所」がpdfファイルが保存されている場所と異なる場合です。ファイル名にパス名を追加したりして試みましたがうまくいきません。

どなたか御教示の程、よろしくお願い致します。

Aベストアンサー

APIを利用すると、簡単に起動できますよ。
http://okweb.jp/kotaeru.php3?q=1242594

この方法は、関連付いたアプリでファイルを起動する方法なので、PDFに限らずマルチにOKです。


'先頭に宣言
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

'関数
Sub OpenFile()
'関連付いたアプリケーションで立ち上げる
Call ShellExecute(0, "open", <ファイル名>, vbNullString, vbNullString, 1)
End Sub

APIを利用すると、簡単に起動できますよ。
http://okweb.jp/kotaeru.php3?q=1242594

この方法は、関連付いたアプリでファイルを起動する方法なので、PDFに限らずマルチにOKです。


'先頭に宣言
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

'関数
Sub OpenFile()
'関連付いたアプ...続きを読む

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Qセルをダブルクリックすると、不特定のフォルダ内にある、セルの値を含む名前のファイルが開くマクロを教えて下さい。

マクロ初心者です。
いろいろ検索してみましたが、見つけられなかったので教えて下さい。

セルをダブルクリックすると、そのセルの値を含むファイルが開くようにしたいのですが、ファイル名はセルの値と完全に一致してはいません。但し、必ずセルの値でファイル名は始まります。
例: セルの値="A"
   開きたいファイル名は= 
"AA 12345987.xls"とか"BCBB 657.xls
開きたいファイルは、C:\ww\001、C:\ww\022、C:\ww\303、、、いずれかのフォルダ内にあります。 C:\wwまでは同じです。

Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
を使って、特定フォルダ内にある、セルの値と完全に一致する名前のファイルを開く方法は、検索をくりかえして見つけることができました。

ファイルが存在するパスを特定できず、
ファイル名が、セルの値と完全には一致していないファイルを自動的に開く方法がありましたら、教えて下さい。お願いします。

マクロ初心者です。
いろいろ検索してみましたが、見つけられなかったので教えて下さい。

セルをダブルクリックすると、そのセルの値を含むファイルが開くようにしたいのですが、ファイル名はセルの値と完全に一致してはいません。但し、必ずセルの値でファイル名は始まります。
例: セルの値="A"
   開きたいファイル名は= 
"AA 12345987.xls"とか"BCBB 657.xls
開きたいファイルは、C:\ww\001、C:\ww\022、C:\ww\303、、、いずれかのフォルダ内にあります。 C:\ww...続きを読む

Aベストアンサー

>ファイル名が、セルの値と完全には一致していないファイルを自動的に開く
部分一致しているBookを全て開くと言う事でしょうか?

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 


人気Q&Aランキング