[[20170811231841]] 『H列のフォルダパスの文字列にハイパーリンクをつax(リンカー) ページの最後に飛ぶ

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

 

『H列のフォルダパスの文字列にハイパーリンクをつける方法』(リンカー)

H列に「C:\Users\Data」「C:\Users\Data\001\」などのフォルダパスが書いてあります。
今まではこれをエクスプローラーのバーにコピペして、そのフォルダを開いてましたが数が増えるとストレスになってきました。
ハイパーリンク関数を使って他の列にリンクボタンのようなものを作ろうと思いましたが、左右のセルはビッチリ埋まっていて離れた場所に作らなくてはならないため断念しました。

VBA等でマクロなどを実行したら、一括でH列の文字列にリンク(青の下線が引かれるイメージ)を張る方法は無いでしょうか。

教えてください。

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


 作業セルにこんな感じの数式を入れ
 ="@HYPERLINK(""" & A1 & """)"

 数式が入ったセルをコピー、別のセル(直接H列でもいいけど)に値だけ貼り付け。
 貼り付けた後に、置き換えで @ を = に置き換え。
 これだけでは、数式と認識されないので、セルを一個選択しては、F2キー、エンタ。
 アクティブセルが下に移動したら、F2キー、エンタ。
 アクティブセルが下に移動したら、F2キー、エンタ。
	〃
	〃
 これを必要セルまで繰り返す。
 数式をして認識されたセルをコピーやカットして、Hに貼り付ければ良いんじゃないかと。

(BJ) 2017/08/12(土) 01:43


この方法ですとF2を繰り返す手間が物凄いです。
100行くらいありますので・・・。
(リンカー) 2017/08/12(土) 01:51

 f2キー、エンタを100回繰り返すだけなんで大した手間じゃないと思うけど、
(BJ) 2017/08/12(土) 01:57

忙しいときに f2キー、エンタを100回は勘弁してください・・・。
今も別のシートの作成で頭を悩ましてる最中なので、これ以上は崩壊です。
(リンカー) 2017/08/12(土) 02:06

 ハイパーリンクの挿入動作をマクロ記録すると
 Sub Macro1()
     ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
           "D:\MyDocuments\201708", TextToDisplay:="D:\MyDocuments\201708"
 End Sub
 こんなコードが得られます。
 これを参考にして、対象範囲のそれぞれのセルにハイパーリンクを挿入するマクロに
 仕立てればよいのではないですか?

 # マクロの修正作業も、"崩壊"につながりますか?
(γ) 2017/08/12(土) 03:03

御二人方、有難う御座います。

一杯一杯でして不躾だとは分かっているものの、マクロの修正も修正の方法を調べて確り動くか試している知識と時間がありませんで御助力が欲しくて投稿しました。

申し訳ない。。。
(リンカー) 2017/08/12(土) 03:16


他人を単なる道具、下請けと見ていると言うことですかね。
ヒントまで書いたんですからトライして見て下さい。
ご自分のことなんでしょ?

(γ) 2017/08/12(土) 03:44


 単純に困っているだけだと思いますよ。
 これを機に、マクロの便利さを覚えてもらえたら、いいですね!

 発想変えて、H列をダブルクリックしたらフォルダが開く、とされてはどうでしょうか?

 該当のシートモジュールに以下のコードを入れてください。
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Target.CountLarge > 1 Then Exit Sub
        If Target.EntireColumn.Address(0, 0) = "H:H" Then
            Cancel = True
            If Dir(Target.Value, vbDirectory) = "" Then
                MsgBox "フォルダがありません", vbCritical
            Else
                Shell "C:\Windows\Explorer.exe " & Target.Value, vbNormalFocus
            End If
        End If
    End Sub

(稲葉) 2017/08/12(土) 06:09


稲葉様、ご紹介ありがとうございます。

物凄く忙しい時に御支援いただけること感謝します。
マクロの楽しさと言いますか便利さは理解しているものの、
自身の知見を超えると、忙しいときには実務に生かせない状況です。
今後は知見の範囲を拡大させてみたいと思います。

 -----------------
γさんへ

立場・状況・知識は人によって違いますので,

自身のことでもヒントだけでは質問しないのと同じなのが現場の現況です。
他人を道具とか下請けに思ってることはありませんが、
ご自分ことでしょと突き放されては、質問する意味がありません。

(リンカー) 2017/08/12(土) 15:07


 選択している範囲の各セルに対して
 ハイパーリンクを張るのは、マクロ記録をもとにすれば
 例えば下記のように書けると思います。

 Sub test()
     Dim r As Range
     For Each r In Selection
         If r.Value <> "" Then
             ' r というセル位置に、r.Value というpathへのハイパーリンクを張る
             ActiveSheet.Hyperlinks.Add Anchor:=r, Address:=r.Value
         End If
     Next
 End Sub

 基本的な繰り返しマクロで対応できるので、
 トライしていただければ、多分到達されるだろうと見込んでのことでした。

 こちらにマクロでと、質問されるということは、
 ある程度ご存じという前提を置いて回答をします。

 他のタスクがあって時間が採れない、といったニュアンスの言葉がありましたので、
 時間が無いと言われても、それはご自分のタスクに関することなので、
 少々の時間は使っていただきたい、という趣旨でした。

(γ) 2017/08/12(土) 17:01


 いやね。
 最初の質問文を見て、ただコードが欲しいとしか感じられなかったんで。
 勉強する気もない、その場だけに感じられたんで、あえて手作業での方法を書きました。

 >立場・状況・知識は人によって違いますので

 と書かれても、単に面倒くさいとしか思えないんですよ。
 だてに、20年近くこういったQ&Aサイトで回答しているわけではないので。

 たかが100行のF2、エンタの作業の時間が無いといっても説得力はないですね。
 自分の場合でも、コード考えてテストするのが、面倒なんで手作業で進めてます。
 忙しいとか言っても、こういうQ&Aサイトを探したり、質問文を考える時間内で終わるだろうし。
 だいたい、マクロ知らないけどマクロならできると思う人が多すぎる。 
 私自身、何ができるのか全く解らなかったので。
 (多少の他言語での知識はあった。)
(BJ) 2017/08/12(土) 22:19

 因みに、たったこんだけのVBS書くのが面倒くさくて、
 10〜400ぐらいのファイル名変更を5年ぐらい手作業でやってました。
 おまけに結構適当で直す気にもならない。
 エクセルのマクロで書くのは使い勝手もあってもっと面倒くさかった。
 (テストや、虫取りはエクセルのVBA方が楽だけど。)

 Set FSO= CreateObject("Scripting.FileSystemObject")
 FPth = FSO.getparentfoldername(wscript.scriptfullname)
 Kakucyoshi = ".jpg"
 For each FNM in FSO.GetFolder(FPth).Files
    FFF = FNM.Name
    OldNm = FPth & "\" & FFF
    hidari = instr(FFF , "[")  '- 6
    migi = instr(FFF , "]")
    if hidari > 0 and migi > 0 then
       if Right(FFF,Len(Kakucyoshi)) = Kakucyoshi Then
          Set objFile = FSO.GetFile(OldNm)
          NewNm =  Left(FFF,hidari - 1) & Right(FFF,Len(Kakucyoshi))
          objFile.Name = NewNm
       End If
    End if
 Next
 objFile = null
 FSO = null
(BJ) 2017/08/12(土) 23:07

 あえて申し上げておきます。

 > 立場・状況・知識は人によって違いますので, 
 > 自身のことでもヒントだけでは質問しないのと同じなのが現場の現況です。 
 > 他人を道具とか下請けに思ってることはありませんが、 
 > ご自分ことでしょと突き放されては、質問する意味がありません。 

 そんなことはないですね。(そう考えるのはあなたの勝手ですが。)
 完全なコードで無ければ回答の意味がない、などということはありません。
 ヒントや「マクロ記録をとって修正してみてください」をもとに、
 自分でトライされ、スキルアップを図ったかたを数多く見てきました。
 結果としてそのほうがご本人の益につながっていると私は思っています。

 簡単にコードをコピペして終わりだと、そのうち「自分が理解していることと
 そうでないことの区分けができない」状態になります。そのような質問者さんが
 本当の理解を始めるのは、ご自分でトライしようとした時です。

 今回は、それほど難しい修正でもありません。
 メソッドの引数の意味を確認することと、繰り返し構文を知っているかどうかだけでした。
 一からメソッドを探すわけでもなく、さほど時間が掛かるものでもありません。

 忙しいとかを理由にされる方は珍しいし、
 ましてや、提示されたマクロ記録を無視する方はホントに珍しいです。
 まあ色んな質問者さんがいますということですけれど。

 以下余談です。

 一般論ですが、忙しいとか急いでいるということを言う人に限って、
 マナーに問題がある人が多かったです(経験上)。
 こういう方は、他人が自分の都合に合わせてくれるのが当然と思っています。

 急いでいるとか言っておきながら、コードが提示されると
 返事もなしにそのまま音沙汰無しになるというのが結構多かったですね。
 それを学ぶ切っ掛けにしようとか、結果の検証を掲示板参加者に還元しようとか、
 そういう思考はほとんど無かったようでした。

 自分の問題解決(最小コストでの)や、
 自分の都合だけを最優先しているという点では、
 ポリシーは極めて一貫しているわけですがね。いやはや。

(γ) 2017/08/13(日) 12:50


 横からすみません。

 @を=に置換した時点でリンク貼られてませんか?
 文字がリンクのスタイルになってないだけで。
(コナミ) 2017/08/14(月) 09:56

 確認とってないけど、
 数式だからそうかもしれません。

 直に手入力してた場合と同じに扱ってました。
 かなり前に、エクセルにURL書き込んで使った方が楽だったんで、置き換えで
 リンク先を変えた場合反応しなかったので・・・。(2007以降では、知らない。)
(BJ) 2017/08/14(月) 15:25

 こちらは2013で試しましたが、多分2007以降なら大丈夫だと思います。
 (2003以前でどうだったか私も記憶に…)

 というか実際F2→Enterね、と書かれていてもとりあえず試してみれば
 すぐわかることだと思うし、やっても見てないんだな〜という
 (^_^;)
(コナミ) 2017/08/14(月) 15:39

コメント返信:

[ 一覧(最新更新順) ]


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