[[20140130160646]] 『ハイパーリンクの連続設定』(zunzun) ページの最後に飛ぶ

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

 

『ハイパーリンクの連続設定』(zunzun)

とあるフォルダ内に「S_H23_001_ABC_KB.pdf」言う名前のPDFファイルが001〜999まであります。このファイルを、セルA1〜A999にハイパーリンクで関連付けするマクロはどのようにすればよいのでしょうか?ファイル名の先頭のS_H23_は変わりません。よろしくお願いいたします。

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


 それだけであれば、
 =HYPERLINK("S_H23_" & Text(ROW(A1),"000") & "_ABC_KB.pdf")
 として、オートフィルでできそうですがマクロが必須でしょうか。

 別フォルダであれば、フォルダパスを含めてパスを記述してください。
 第2引数で表記は別表記にできます。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/hyper.htm
(Mook) 2014/01/30(木) 16:38

Mookさん ありがとうございます。説明が不足していましたが、
ABC_KBもファイルによって変わるので、うまくできません。
やはり、マクロなんですか?
(zunzun) 2014/01/30(木) 17:01

 例えばB1セルにファイル名の共通部分を入れるとする。
 そして式を

 =HYPERLINK("S_H23_" & Text(ROW(A1),"000") & "_" & $B$1 & ".pdf")

 とするとB1セルの値を変えることで「ABC_KB」部分が違うものにも対応できる。
(ねむねむ) 2014/01/30(木) 17:46

ねむねむさん ありがとうございます。ファイル名で共通なのは「S_H23_」だけなので、
「S_H23_100_BGE_OORKUNI.pdf」などのファイルがあります。ファイル番号(001〜999)以降の名称
をB1セルに入力するのは大変です。
(zunzun) 2014/01/30(木) 18:11

 >「S_H23_001_ABC_KB.pdf」言う名前のPDFファイルが001〜999まであります。
 の実際は
   S_H23_nnn_****.pdf(nnn = 001 〜999、*** は不定)
 ということでしょうか。

 とりあえずのサンプルです。
 Sub Sample()
    Const targetFolder = "D:\とあるフォルダ"

    Dim ws As Worksheet
    Set ws = ActiveSheet

    Columns("A").Clear

    Dim file
    Dim n As Long
    Dim r As Long
    For n = 1 To 999
        file = Dir(targetFolder & "\S_H23_" & Format(n, "000") & "_*.pdf")
        If file <> "" Then
            r = r + 1
            ws.Hyperlinks.Add Anchor:=ws.Cells(r, "A"), _
                Address:=targetFolder & "\" & file, TextToDisplay:=file
        End If
    Next
 End Sub

(Mook) 2014/01/30(木) 19:58


Mookさん できました。感激!!ありがとうございました。
(zunzun) 2014/01/31(金) 09:01

できましたが、実はPDFファイルがH23〜H25の3年分があります。ファイル数は各年度で異なります。
ファイルは、H23,H24,H25のフォルダに分けて保存してあます。Mookさんのマクロを使って、A列にH23〜H25のPDFを連続してハイパーリンクするような方法はあるのですか?マクロが便利なので、欲が出ました。
(zunzun) 2014/01/31(金) 12:52

 とりあえずの拡張サンプルです。

 Sub Sample()
    MakeHyperLinks ActiveSheet, "D:\とあるフォルダ1", "S_H23_", True
    MakeHyperLinks ActiveSheet, "D:\とあるフォルダ2", "S_H24_"
    MakeHyperLinks ActiveSheet, "D:\とあるフォルダ3", "S_H25_"
 End Sub

 Sub MakeHyperLinks(ws As Worksheet, targetFolder As String, preFix As String, Optional clearMode As Boolean = False)
    Dim r As Long
    If clearMode = True Then
        ws.Columns("A").Clear
    Else
        r = ws.Cells(Rows.Count, "A").End(xlUp).Row
    End If

    Dim file
    Dim n As Long
    For n = 1 To 999
        file = Dir(targetFolder & "\" & preFix & Format(n, "000") & "_*.pdf")
        If file <> "" Then
            r = r + 1
            ws.Hyperlinks.Add Anchor:=ws.Cells(r, "A"), _
                Address:=targetFolder & "\" & file, TextToDisplay:=file
        End If
    Next
 End Sub
(Mook) 2014/01/31(金) 20:15

Mookさん おはようございます。できました。構文の内容を勉強します。ありがとうございました。
(zunzun) 2014/02/03(月) 09:43

追加で教えてください。ハイパーリンクの貼り付けで、拡張子(.pdf)を表示させないようにする構文を教えてください。質問の検索をして事例を探しましたが、発見できませんでした。よろしくお願いします。
(zunzun) 2014/02/03(月) 17:34

TextToDisplay:=Left(file, Len(file) - 4)
(???) 2014/02/03(月) 17:55

???さん できました。SUBSTITUTEで考えていました。ありがとうございました。
(zunzun) 2014/02/04(火) 13:07

コメント返信:

[ 一覧(最新更新順) ]


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