[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ハイパーリンク先のフォルダを一括コピー』(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
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
こちらこそ、御用力いただき、大変ありがとうございました!!!
(TOKIO) 2016/06/20(月) 19:20
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.