[[20190623001726]] 『フォームでファイルパスを取得して、セルにハイパ』(初心者です) ページの最後に飛ぶ

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

 

『フォームでファイルパスを取得して、セルにハイパーリンクで貼り付けたい』(初心者です)

お疲れ様です。

sheet1のA列にファイル名、B列をリンクとしています。

フォームでファイルパスを取得して、登録ボタンでセルに張り付けると文字列になってしまいます。そのセルを一旦、ダブルクリックするとハイパーリンクになるのですが...

調べるとハイパーリンク関数を使用すればできるようですが、どのように使用すればよいかわかりません。

フォームには以下のコードを記述しています。

Private Sub 登録_Click()

    Dim lastRow As Long
    With Worksheets("sheet1")
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Cells(lastRow, 1) = ファイル名.Text
        .Cells(lastRow, 2) = リンク.Text

    End With
    Unload Me
 End Sub

Private Sub リンク登録_Click()

    Dim strFilePath  As Variant
    strFilePath = Application.GetOpenFilename()

    'ファイルが正しく選択されたら ファイル名をテキストボックスに表示
    If strFilePath <> "False" Then
        リンク.Value = strFilePath

    End If
 End Sub

初歩的な質問で申し訳ありませんが、よろしくお願い致します。

< 使用 Excel:Excel2010、使用 OS:unknown >


 とりあえず、ハイパーリンクでファイルを選択するのをマクロ記録した方が良いよ。
(BJ) 2019/06/23(日) 05:28

>調べるとハイパーリンク関数を使用すればできるよう
もうちょっと調べるとゴールにたどり着けたかもです。

検索のお手伝い。
https://www.moug.net/tech/exvba/0050064.html
http://excel.style-mods.net/tips_vba/tips_vba_2_26.htm
https://www.sejuku.net/blog/68338

(もこな2) 2019/06/23(日) 08:12


BJさん

返信ありがとうございます。
マクロ記録の事を初めて知りました。初心者がすぎてすいません。
しかし、ハイパーリンクをマクロ記録してコードを表示して確認できました。
表示されたコードのaddressに変数を割り当てればよかったのでしょうか?
いろいろ試してみましたが、分かりませんでした。

マクロ記録でコードを確認できることを知り勉強になりました。
ありがとうございます。
(初心者です) 2019/06/23(日) 21:20


もこな2さん

返信ありがとうございます。

上記の3つ目リンク先のサンプルコードを参考にさせていただきました。

複数セルではなく、1つのセルに実行したかったので、繰り返し処理が必要ないと思い、以下の様にしました。

Private Sub 登録_Click()

    Dim lastRow As Long
    Dim hyplink As Hyperlink

    With Worksheets("sheet1")
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Cells(lastRow, 1) = ファイル名.Text
        .Cells(lastRow, 2) = リンク.Text

    If Cells(lastRow, 2).Value <> "" Then
    Set hyplink = ActiveSheet.Hyperlinks.Add(Anchor:=Cells(lastRow, 2), _
                                             Address:=Cells(lastRow, 2))
    End If
    End With
    Unload Me
 End Sub

そして、値が入ってない場合としてIf文を入れてみました。一応、動作は良好ですが、この記載方法で合っていますでしょうか?よろしければ確認をお願い致します。

(初心者です) 2019/06/23(日) 21:27


動いているなら問題ないとおもいますが、私ならこんな感じでしょうか

    Private Sub 登録_Click()
        Dim MyRNG As Range

        With Worksheets("sheet1")
            Set MyRNG = .Cells(.Rows.Count, 1).End(xlUp).Offset(1)

            MyRNG.Value = ファイル名.Text
            MyRNG.Offset(, 1).Value = リンク.Text

            If リンク.Text <> "" Then
                .Hyperlinks.Add Anchor:=MyRNG.Offset(, 1), Address:=リンク.Text
            End If
        End With

        Unload Me
     End Sub

 ※未テストなのでミスっていたらごめんなさい。

(もこな2) 2019/06/24(月) 05:48


もこな2さん

返信遅れまして申し訳ありません。 
記載いただいたコード問題なく動作しました。活用させて頂きます。

最終行取得のoffsetの使用方法、Setを使用した変数の代入等、勉強になりました。

ありがとうございました。

(初心者です。) 2019/06/25(火) 14:36


コメント返信:

[ 一覧(最新更新順) ]


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