[[20160620164531]] 『ハイパーリンク先のフォルダを一括コピー』(TOKIO) ページの最後に飛ぶ

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

 

『ハイパーリンク先のフォルダを一括コピー』(TOKIO)

いつもお世話になっております。

現在、膨大な量のPDF資料をエクセル上で管理始めまして、
フィルター検索によって欲しいPDF資料を検索することはできたのですが、
フィルターによってリスト化されたPDF資料を人に渡す際に、
指定のフォルダにPDFファイルをコピーしたいと思っています。

ハイパーリンクによって、紐付けされたPDFファイルに飛ぶことはできるのですが、
フィルターによって絞られたハイパーリンクのセル列を一括で指定のフォルダにコピーする方法はありませんでしょうか?

完全にこの方法でなくとも、効率化ができればと考えておりますので、
何卒、よろしくお願いします。

< 使用 Excel:Excel2016mac、使用 OS:MacOSX >


 >>フィルターによって絞られたハイパーリンクのセル列を一括で指定のフォルダにコピーする

 ですか?

 その抽出された列のセルにあるハイパーリンク情報が指し示すPDFファイルを指定のフォルダにコピーするということではないのですか?

 いずれにしても、その列がどこなのか、ハイパーリンク情報は ハイパーリンクの挿入でできあがっているのか
 HyperLink関数でリンクされているのかを明確にすれば、回答がアップされると思います。

(β) 2016/06/20(月) 17:33


素早い回答大変ありがとうございます!

伝わりにくい文章で申し訳ありません、

おっしゃる通り、
抽出された列のセルにあるハイパーリンク情報が示すPDFファイルを指定のフォルダにコピーするということであっております。

いずれにしても、その列がどこなのか、ハイパーリンク情報は ハイパーリンクの挿入でできあがっているのか
 HyperLink関数でリンクされているのかを明確にすれば、回答がアップされると思います。

すみません、列がどこなのかという質問の答えになっているかわからないですが、
英字でいうとMの列にハイパーリンクの列を作成しております。
ハイパーリンクに関しましては、関数でのやり方を知らなかったので、
ハイパーリンクの挿入にて、ローカルファイルを挿入しております。

何卒、よろしくお願いいたします。

(TOKIO) 2016/06/20(月) 17:49


Sub main()
'ハイパーリンクはM列。
'フィルタ後に実行。
    Dim fso As Object, r As Range, tfol As String
    tfol = ThisWorkbook.Path & "\コピー先" '★コピー先フォルダを指定
    Set fso = CreateObject("Scripting.FileSystemObject")
    For Each r In ActiveSheet.UsedRange.Columns("A").SpecialCells(xlCellTypeVisible)
        If r.Hyperlinks.Count > 0 Then
        FileCopy fso.GetAbsolutePathName(r.Hyperlinks(1).Address), tfol & "\" & r.Hyperlinks(1).Address
        End If
    Next r
End Sub
(mm) 2016/06/20(月) 18:08

返信大変ありがとうございます!!

こちらで試してみたのですが、

   Set fso = CreateObject("Scripting.FileSystemObject")

でエラーが出てしまい、原因ってわかりますでしょうか...?

お手数かけまして、申し訳ありません。
(TOKIO) 2016/06/20(月) 18:25


 マックユーザーではないので検証出来ませんが、原因は↓と思われます。
 解決策ではなくすみません。

http://qiita.com/sjuny/items/d3bf8e4dd9e609374575
(カリーニン) 2016/06/20(月) 18:42


 同様に

https://support.microsoft.com/en-us/kb/274222

 FSOを使わない方法で処理すればいいと思います。

(β) 2016/06/20(月) 18:49


環境を見落としていました。
環境がないためご協力できません。失礼しました。

(mm) 2016/06/20(月) 19:17


MMさま

こちらこそ、御用力いただき、大変ありがとうございました!!!
(TOKIO) 2016/06/20(月) 19:20


マックでの弊害なんですね....
ちなみに、エラーは429と出ています。
もしよろしければ、FSOを使わない方法をお教えいただけると
とても嬉しいです.......
(TOKIO) 2016/06/20(月) 19:21

 macでの検証はできないのですが、試してください。
 ★のところは、実際のものに。

 21:46 インデントが乱れていたので直しました。

 Sub Test()
    Dim c As Range
    Dim fPath As String
    Dim nPath As String
    Dim fName As String
    Dim tmp As Variant

    nPath = "c:\Copy\"   '★コピーフォルダ

    For Each c In Range("M1", Range("M" & Rows.Count).End(xlUp))
        If c.Hyperlinks.Count > 0 Then
            fPath = c.Hyperlinks(1).Range.Formula
            tmp = Split(fPath, ".")
            If LCase(tmp(UBound(tmp))) = "pdf" Then
                tmp = Split(fPath, Application.PathSeparator)
                fName = tmp(UBound(tmp))
                If Dir(nPath & fName) <> "" Then Kill nPath & fName
                FileCopy fPath, nPath & fName
            End If
        End If
    Next

 End Sub

(β) 2016/06/20(月) 21:15


皆さま

本当にお優しくありがとうございます....

βさん
作成いただき、本当にありがとうございます。

申し訳ありません。
現在、

  If Dir(nPath & fName) <> "" Then Kill nPath & fName

ここのポイントでファイルがありませんと詰まってしまい、
実行エラー53が出てしまっているのですが、まだ解決いたしますでしょうか...?

もしかすると、ハイパーリンクが記載されているのがM3からなのですが、
関係ありますでしょうか?

たびたび申し訳ありません。
何卒、よろしくお願いいたします。

(TOKIO) 2016/06/21(火) 14:00


 エラーで止まって、このコードが黄色くなっている状態で、マウスポインタを nPath と fName にあてて、
 その時に浮かび上がる、それぞれの変数の値をメモしてください。

 で、その2つを連結した文字列(ファイルのフルパス)が示すファイルが、そのフォルダにあるかどうか
 確認した上で、その有無と、それぞれの 変数の値を教えてください。

(β) 2016/06/21(火) 14:14


コメント返信:

[ 一覧(最新更新順) ]


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