プロが教えるわが家の防犯対策術!

エクセルで表がありそのセルにはエクセルのファイル名とワードのファイル名が一覧されています。そこでVBAにてダブルクリックしたらそのエクセルかワードのファイルを開くというマクロを組みたいんですがどうやったら一つの表でエクセルもワードも開けますか?例えばA~E列がワードの一覧でF~Jまでがエクセルの一覧のような表です。以下に試したプログラムがありますが片方しか開けません。

Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)

If target.Row > 2 And target.Column < ActiveSheet.UsedRange.Columns.Count + 1 Then

If target.Value = Empty Then
MsgBox "データがありません", vbInformation
ActiveSheet.Range("a1").Select

Else
Workbooks.Open ("C:\sample\" & target.Value)

End If
End If

End Sub

↑これだとワードファイルが開けません。
Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)

Set Myword = CreateObject("word.application")
  Myword.Visible = True
  Myword.Documents.Open Filename:="C:\sample\" & target.Value

  End Sub

↑これだとエクセルファイルが開けません。
どのようなプログラムを組めばエクセルとワードを開けますでしょうか?appactivateステートメントとか使えばできますか?何の関数を使ったらいいか分かりませんどなたかご教授ください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>Set Myword = CreateObject("word.application")


今回の質問のケースのような時に、オートメーションを使ったら「まずい」と思うのですが……。理由はないのですが、気をつけないとタスクに残してしまい兼ねません。

ハイパーリンクというのはグローバルだから、それで解決するという手も、一興だけど、私は、以下のような方法を実行しています。ただし、問題点は、Win98 では動かないはすです。
拡張子を実行プログラムに関連付けしているものに限りますが、複数の拡張子がある場合は、こんな風にします。当然、pdf でも、txt でも、jpg でも可能です。

以下をみて工夫してみてください。
'//
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 '以下は必ず、¥を末尾に入れてください。
 Const mPATH As String = "C:\sample\"
 Dim Fn As String
 Cancel = True
 If Target.Row = 1 Then Exit Sub
 If Target.Value = "" Then MsgBox "データがありません", vbExclamation: Exit Sub
 Fn = mPATH & Target.Value
 If Dir(Fn) = "" Then MsgBox "ファイルがありません。", vbExclamation: Exit Sub
 shtPath = CreateObject("Scripting.FileSystemObject").GetFile(Fn).ShortPath
 Fn = shtPath
 With CreateObject("Wscript.Shell")
  .Run "" & Fn & "", 3
 End With
End Sub
    • good
    • 0

はたしてマクロを組む必要があるのでしょうか?


セルにハイパーリンクを設定するのでは駄目ですか?
    • good
    • 0

拡張子でIf判定して実行する命令を変えればいいのでは?

この回答への補足

その方法がしりたいんです!

補足日時:2010/10/22 12:52
    • good
    • 0

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


人気Q&Aランキング