[[20170607133912]] 『A列にあるリンクをクリックしたら同行のB列C列の浴x(和気葱) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『A列にあるリンクをクリックしたら同行のB列C列の用語が含まれているファイルを指定フォルダから開けないものか・・・』(和気葱)

タイトルが長くなりました。

A列にあるリンクをクリックしたら、同行のB列C列の用語が含まれているファイルを指定フォルダから探して開かせる方法はないでしょうか?
もちろん、複数該当する可能性もありますので、1クリックで複数のファイルが開くこともあると思います。

D列以降に数字が記入されているんですが、怪しい数字はB列とC列にある用語で構成されたファイルを探していちいち見てたんですが探すのが大変でして・・・。

< 使用 Excel:Excel2016、使用 OS:Windows7 >


 よく検証したわけではありませんが、一つのセルに複数のパスにリンクする
 HYPERLINKは設定できないようです。

 ExcelのHYPERLINK関数は,セル内で1つだけ記述可能。複数個は無理
http://computer-technology.hateblo.jp/entry/20140115/p2

 やるならVBAになると思います。

 複数のセルに分割するにせよ、VBAでやる方が関数を駆使するよりも
 やりやすいと思います。
(カリーニン) 2017/06/07(水) 15:08

 もしかして、ファイル名ではなく、セルの内容を見る、ということですか?
(カリーニン) 2017/06/07(水) 15:10

 シートモジュールに。
 A列ダブルクリックで動きますが、エラー処理はしていないです。
 また、対象のファイルがエクセルファイルと想定しています。

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Const TargetPath As String = "指定フォルダパス"
    Dim FSO As Object
    Dim F As Object
    Dim myStr1 As String
    Dim myStr2 As String
    If Target.Column = 1 Then
        myStr1 = Range("B" & Target.Row).Value
        myStr2 = Range("C" & Target.Row).Value
        Set FSO = CreateObject("Scripting.FileSystemObject")
        For Each F In FSO.GetFolder(TargetPath).Files
            If InStr(F.Name, myStr1) * InStr(F.Name, myStr2) Then
                Workbooks.Open F
            End If
        Next F
    End If
 End Sub
(秀丸) 2017/06/07(水) 15:20

カリーニン さま

有難う御座います。やはり無理なんですね・・・。
なお、セルの内容ではなくファイル(PDFなど)となります。

秀丸 さま

有難う御座います。
対象ファイルを記載するのを失念してました。
エクセルもあるのですが、半分くらいはPDFが混じっております。
ご投稿のVBAを修正頂ければ幸いです。

皆様宜しくお願い致します。

(和気葱) 2017/06/07(水) 21:04


 横から失礼します。

 とりあえず、秀丸さんがいらっしゃるまでの繋ぎで。

 Workbooks.Open F

 を CreateObject("Shell.Application").ShellExecute F

 と書き換えて試してみてください。

 本来は、こういう大雑把な開き方ではなく、ファイルの種類に応じて
 開き方を変えないといけないですが。
(カリーニン) 2017/06/07(水) 21:23

 拡張子は

 FSO.GetExtensionName(F)

 で取得できます。

 でエクセル系の場合は

 そのまま
 Workbooks.Open F
 で。

 ワードドキュメントの場合は
 ワードのインスタンスを作成して、そのインスタンスで開く

 知れている拡張子のファイルだったら、アプリケーションを指定して開く

 面倒くさかったら、先ほどの
 CreateObject("Shell.Application").ShellExecute ファイルパス
 で。拡張子に関連付けられているアプリケーションで開きます。
(カリーニン) 2017/06/07(水) 21:30

 カリーニン さま

CreateObject("Shell.Application").ShellExecute F
で試したところ、確かに開きました。

この方法は大雑把な方法なんですか・・・。
あまり良い響きではありませんが、ポポンと欲しいファイルが開くのは嬉しいですね。
ストレスレスです。

行の多いエクセルですので何処まで耐えられるか分かりませんが使ってみたいと思います。

まずは有難うございます!!
(和気葱) 2017/06/07(水) 22:19


 カリーニンさん
 フォローありがとうございます!
 CreateObject("Shell.Application").ShellExecute
 この方法、知りませんでした。勉強になりました。
(秀丸) 2017/06/08(木) 09:09

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.