• ベストアンサー

エクセルにファイルを添付したい

エクセルで表を作成しています。そこに他のPDF文書を貼り付けたいと思います。どのようにしたら良いでしょうか? 問題点 1 PDFファイルは画像のように貼るのではなくハイパーリンクでつけたい 2 このPDFファイル自体がときどき更新されるため、PDFファイル名を~20061201.pdfのように、いつPDFファイルが更新されたかわかるようにしたい 3 エクセル自体はあまり更新しない予定なので、ハイパーリンクでつけたPDFファイルが常に最新のものにしたい 以上のような状態です。現在はふつうにPDFファイルをハイパーリンクでつけていますが、このままではPDFファイルを更新した時、すべて同じように更新しなければならないので困ってます。ファイルではなくフォルダに日付を入れることも検討したのですが、フォルダ名を変更するとハイパーリンクでは検索されなくなってしまいますよね? お力添えお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#22650
noname#22650
回答No.1

マクロ(VBA)を使うしかないと思います。 ----以下ソース---- Private Function 日付チェック(path) As Long  Dim fname As String  Dim d As Long  Dim last As Long    日付チェック = -1  ChDir ActiveWorkbook.path  fname = Dir(path)  Do While (fname <> "")   If fname Like "*########.pdf" Then    d = Val(Mid(fname, Len(fname) - 11, 8))    If d > last Then last = d   End If   fname = Dir()  Loop  日付チェック = last End Function Sub リンク更新()  Dim l As Hyperlink  Dim d As Long    For Each l In ActiveSheet.Hyperlinks   If l.Address Like "*########.pdf" Then    d = 日付チェック(Left(l.Address, Len(l.Address) - 12) & "*.pdf")    If d <> -1 Then     l.Address = Left(l.Address, Len(l.Address) - 12) & Trim(Str(d)) & ".pdf"     l.Range = Left(l.Address, Len(l.Address) - 12) & Trim(Str(d)) & ".pdf"    End If   End If  Next End Sub ----以上ソース---- 先に「~20061201.pdf」へのリンクを作って下さい。 「リンク更新」を実行するとアクティブシートのリンクを更新します。 「~20061201.pdf」と同じフォルダにある新しい日付のファイルを探し、リンクを書き換えます。 念のためバックアップを取ってから、お試しください。

hit117
質問者

お礼

丁寧な回答ありがとうございます。マクロで対応するしかないのですね。未知の領域ですがためしてみたいと思います。ありがとうございました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 私も考えてみました。状況がはっきりしていないので、ある程度、こちらできめてしまいました。ファイル名自体は、何にしようが、そのブックの下位フォルダーのどこに入れようが別に問題はありません。そのブックの上位フォルダは、現在は探しません。 もっとも新しいpdfファイルを探すマクロです。 ファイルの日付は、ハイパーリンクのポップアップに入れました。ファイル名とは別です。 ただし、あまり、上のフォルダでファイルが多いと時間が掛かります。 ハイパーリンクは、一つしかないことを条件にして、それが書き換わります。 なお、Excel 2000 以下では、このマクロは、やってみないと分からないです。また、IE は、5.0 以上を条件としています。 '-------------------------------------------------- Sub NewHyperLinkChanging() 'ハイパーリンクを最新のファイルに書き換えるマクロ Dim r As Range Dim d As Date Dim Fname As String Dim f As Variant Dim Disp As String 'ハイパーリンクの一つに対して、最新のファイルに書き換えられる '日付は、ヒントに出てくる If ActiveSheet.Hyperlinks.Count = 0 Then   MsgBox "Hyperlink がありませんので、終了します。": Exit Sub Else   Set r = ActiveSheet.Hyperlinks(1).Range End If With Application.FileSearch   .NewSearch   .LookIn = ThisWorkbook.Path '親パス   .SearchSubFolders = True   .Filename = "*.pdf"  'なるべく頭出しを限定したほうがよい   '特徴のある語でもよい。例06*.pdf   .MatchTextExactly = False   .FileType = msoFileTypeAllFiles  If .Execute() > 0 Then          For Each f In .FoundFiles     If FileDateTime(f) > d Then      d = FileDateTime(f)      Fname = f     End If     Next f   Else     MsgBox "検索条件を満たすファイルはフォルダにはありません。"     Set r = Nothing     Exit Sub   End If End With      Disp = Mid$(Fname, InStrRev(Fname, "\") + 1)   With r.Hyperlinks(1)      .Address = Fname      .ScreenTip = Format(d, "yymmdd")      .TextToDisplay = Disp   End With   Set r = Nothing End Sub '--------------------------------------------------

hit117
質問者

お礼

丁寧な回答ありがとうございます。マクロで対応するしかないのですね。未知の領域ですがためしてみたいと思います。ありがとうございました。

関連するQ&A