エクセルマクロによるハイパーリンクの方法
- エクセルマクロを使用して、セルに書かれた文字列に対応するハイパーリンクを作成する方法について質問します。
- 質問者は、マクロ.xlsファイルとdataフォルダ内にある複数のPDFファイルがあり、マクロを使ってセルに書かれた文字列をクリックすると対応するPDFファイルが開くようにしたいと考えています。
- 現在、質問者はセルに書かれた文字列を変数に代入し、ワイルドカードを使って対応するPDFファイル名を取得することに問題があるようです。ご解答をお待ちしています。
- ベストアンサー
エクセルマクロによるハイパーリンクの方法
はじめて投稿します。 エクセルマクロを始めたばかりですが、よろしくお願いします。 Fileフォルダ内にマクロ.xlsとdataフォルダがあり、 dataフォルダ内には複数のPDFファイルがあります。 マクロ.xlsのセルA1~A10に適当な英数字の文字列(例えばA123,B243,C072…など)が書かれていて dataフォルダ内にはセルA1~A10に書かれている文字列に少し文字が追加された名前のPDFファイル (例えばセルの文字列が"A123"なら"A123(OK).pdf")があります。 これをマクロを使ってA1~A10の文字列にハイパーリンクさせて、 セルに書かれている文字列をクリックして開きたいのですがどうすればよいでしょうか? A1~A10に書かれている文字列を変数cellnameに代入し、 PDFファイルをcellnameにワイルドカードを使って変数pdfnameに代入できずにつまずいています…。 どなたかご解答の程宜しくお願いいたします。
- guardian01
- お礼率80% (4/5)
- オフィス系ソフト
- 回答数5
- ありがとう数6
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> マクロ.xlsのセルA1~A10に適当な英数字の文字列(A123,B243,C072 …など)が書かれていて セルの文字列がすべて4桁という前提ですが。 ' Sub AAA() Dim i As Integer, N As Integer, TargetFile As String i = 1 Do While Cells(i, 1) <> "" N = 0 TargetFile = Dir$("C:\_Anns\file\data\*.pdf") Do While TargetFile <> "" If Left(TargetFile, 4) = Cells(i, 1) Then ActiveSheet.Hyperlinks.Add Anchor:=Range(Cells(i, 1).Address), _ Address:="C:\_Anns\file\data\" & TargetFile GoTo Nxt End If TargetFile = Dir$ Loop Nxt: i = i + 1 Loop End Sub
その他の回答 (4)
- misatoanna
- ベストアンサー率58% (528/896)
> セルへの入力ミスやファイルの欠如がありえる ということですので、リンク対象のファイルを次のようにしました。 a.ファイルの"("までの文字列とセルの文字列が同じ。 b."("がつかないファイルは、ファイル名の先頭数文字がセルと同じ。 c.PDFに限らず、すべての拡張子が対象。 限定が必要な場合は、 myDir & "*.*" を myDir & "*.pdf" に 書き換えます。 ' Sub BBB() Dim myDir As String Dim i As Integer, N As Integer, TargetFile As String myDir = "C:\_Anns\Zone_2\data\" '←実際のフォルダ名に書換え i = 1 Do While Cells(i, 1) <> "" N = 0 TargetFile = Dir$(myDir & "*.*") Do While TargetFile <> "" Select Case InStr(TargetFile, "(") - 1 Case Is > 0 If Left(TargetFile, InStr(TargetFile, "(") - 1) = Cells(i, 1) Then GoTo Lnk End If Case Else If Left(TargetFile, Len(Cells(i, 1))) = Cells(i, 1) Then GoTo Lnk End If End Select TargetFile = Dir$ Loop GoTo Nxt Lnk: ActiveSheet.Hyperlinks.Add Anchor:=Range(Cells(i, 1).Address), _ Address:=myDir & TargetFile Nxt: i = i + 1 Loop End Sub これから出かけてしまいますが、最後に―― > エクセルマクロを始めたばかり と書かれていたことに、いま気づきました。 マクロのお勉強中のようですが、私の記述はまったくの我流で、「動けばいいや」と いうものです。(無責任!) VBAの正しい文法や記述につきましては、書物やVBA専門のサイトを見てください。
お礼
重ね重ねご回答ありがとうございます。 If Left(TargetFile, InStr(TargetFile, "(") - 1) = Cells(i, 1) Then 今までの作成したプログラムの一部に上の一行を利用させて頂きました。 misatoannaさんには何度も回答いただき本当にありがとうございました。 これをつかってデータベースの方を作成して行こうと思います。
- misatoanna
- ベストアンサー率58% (528/896)
> このプログラムで一応ハイパーリンクできました。 よかったですね。 (^^) > セルの文字数は9~15文字でランダムに書かれています。 > PDFファイル名="Cell(i,1)"と*と& ".pdf"を使って完全一致させる。 dataフォルダ内にあるファイルは、A列のセルに書かれている不定長の 文字列に少し文字が追加された名前のPDFファイル。――ということで したら、 If Left(TargetFile, 4) = Cells(i, 1) Then の部分を If Left(TargetFile, Len(Cells(i, 1))) = Cells(i, 1) Then と置き換えればよいでしょう。 ファイル名の左(先頭)から「セルの文字列と同じ長さ分」が同じなら、 という、LEFTワークシート関数の考え方です。
お礼
またしても回答ありがとうございます。 こんなやり方があるなんて知りませんでした。 経験や発想やセンスの問題ですかね…。 核となる部分はmisatoannaさんに教えていただいたので後は自分の方で膨らませようと思います。 重ね重ね質問をお願いして申し訳ないのですが、 もし時間があるようでしたらお答えいただけると助かります。 仮にセルA1にA123、B1にA1234が入力されていたときに dataフォルダ内にA123(OK).pdfファイルが存在せず A1234(OK).pdfファイルのみ存在していた場合、 セルA1、B1ともにA1234(OK).pdfファイルがリンクされますよね? こういった場合にセルA1は本来A123(OK).pdfファイルがリンクされるべきなので、 セルA1にはA1234(OK).pdfはリンクさせず、セルB1のみにリンクさせるようにはできないでしょうか? (セルへの入力ミスやPDFファイルの欠如があると起こりえると思いましたので…) 参考になるかは分かりませんが、 PDFファイルにはセルの文字列の後に括弧"()"がついておりますので PDFファイルの"("までの文字列とセルの文字列が同じなら If文の処理をするという事はできないですかね…? misatoannaさんのお手数をおかけしない程度に考えていただけると非常に助かります。
- misatoanna
- ベストアンサー率58% (528/896)
#2です。 > Dir$("C:\_Anns\file\data\*.pdf") テスト用で使用したディレクトリ名をそのまま記述してしまいました。(^^ゞ 実際のディレクトリ名に置き換えてください。
- get3
- ベストアンサー率25% (2/8)
どのような場合にしようされるのでしょうか? マクロでないとだめですか? 挿入-ハイパーリンクが簡単ですが?
お礼
早速のお返事ありがとうございます。 エクセルシートにいろいろな情報が書かれてありまして セルに書かれているファイルをすぐに参照したいと考えています。 データ量は今後増えていく予定で現在でも1000件以上あるので 今後のことを考えるとマクロで一発でリンクさせてもらえると効率的と考えました。 ご回答ありがとうございました。
関連するQ&A
- エクセルマクロ 次のようなプログラム教えてください
エクセルのマクロで、次のようなことをしたいと思っていますが、 素人でわかりません。 教えていただけますか。 ---------------------------------- o動かしているファイルをa.xlsとします。 a.xlsは、3行目からA列に名前、B列~D列にデータが入っていて、 各行ごとのファイルを作りたい。(行数は決まっていない) なお、セルE1にある文字が入っている。 o各ファイルは、原紙としてgensi.xlsとして保存されているファイルに、 a.xlsのB~D列のものを入力したものを作りたい。 (B~D列のデータは、gensi.xlsのそれぞれセルC7・C8・C9に入力する) gensi.xlsは、a.xlsと同じフォルダにあります。 o作成場所は、「C:\date」の中に、セルE1にある文字のフォルダ、A列に ある名前のフォルダに作りたい。 (セルE1の文字のフォルダは、マクロを初めて実施するときは無いと思います が、2回目からは存在すると思います。A列の名前のフォルダはマクロ実施時 にはありません。作成するファイル名は、A列の名前と同じ(フォルダ名と同じ).xls にします。) o実行ボタンを3つ作って、1つは今選択されている行のフォルダ・ファイルを作る。 2つ目は数字を入力させて、今選択されている行から入力した数字の行までを一括 で作成する。 3つ目は、3行目から現在入力されている行すべてを一括で作成する。 ------------------------------- 上記のことをしたいと思っています。 よろしくお願いします。 駄文ですみません。 なお、エクセルは古いバージョンでエクセル2000です。
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロのコードを教えてください
エクセルマクロについて教えてください。 エクセルバージョンは2013です。 現在定例業務の改善を行っております。手作業で実施している作業をマクロで自動化したくコードを教えてください。〈作業〉 1台帳.xlsのA~F列でデータを入力してデータベースを作成しています。 2そのデータを社内他部署送付用の定型フォーマットに転記して所定のフォルダに名前を付けて保存しています。定型フォーマットのC1に台帳.xlsのB列のデータ、D4にC列のデータ、F5にE列のデータを転記して台帳.xlsのA列のデータをファイル名に追加して所定のフォルダにほかんします。(ファイル名例「案件+A列のデータ.xls」) ※定型フォーマットも所定のフォーマットフォルダで管理しています。いつもそれをコピーして使用しています。 3保存したファイルの保管場所のファイルパスを台帳.xlsのG列に転記してハイパーリンクにする こんな作業になります。台帳.xlsのデータは不定期で増えていくので1件ずつ実行できればと思っています。実行済みと未実行の判別はどこかの列の「済」なんかつけて条件判別できればと思っています。 よろしければ教えてください。 (1)所定のフォルダは仮でマイドキュメントの「案件保管フォルダ」 (2)定型フォーマットはマイドキュメント直下においてある (3)定型フォーマットはの「案件詳細」シートに転記 (4)案件は文字列としてプラスA列のセルのデータを使用して「案件保管フォルダ」に保管しています。
- 締切済み
- Excel(エクセル)
- エクセルのマクロについて教えてください。
エクセルのマクロについて教えてください。 マクロでエクセルのセルから、PDFのデータを呼び出したいのですが、どのような設定をすればいいでしょうか?いろいろなサイトでみた設定を試してみているのですが、うまくいきません。ひょっとしたらPDFの名前を入力する部分か、データの置き場所等が違うのかとも思っています。できましたら下記の条件で、PDFの名前やデータの置き場所も入力して、教えていただけるとありがたいです。なお当方はマクロの素人なので、詳しく教えていただけるとありがたいです。 条件 1,エクセルは2010です。 2,PDF、エクセルシートともにデスクトップ上の1同じフォルダ内にあります。 3,PDFの名前は1234.pdfです。 4、フォルダ名は5678です。 5,エクセルシート名はtatai.xlsです。 6,ハイパーリンクはデザインの関係で使えません。 7,できあがったら基本的にUSB等で持ち運びたいです。 *またPDFについてはなんらかの関連付け等が必要なのでしょうか?
- ベストアンサー
- オフィス系ソフト
- ハイパーリンク設定をマクロに記録したい(エクセル2000)
フォルダ内のファイルの一覧をエクセルで作り、目次のようにハイパーリンクでジャンプするようにします。1フォルダ、1シートとします。 エクセルの文字列を選択して、ハイパーリンク設定画面で、リンク先のフォルダを指定するところまでをマクロに記録し、ショートカットキーに登録して作業を早くしたいのです。 ところが、リンク設定が完了するまでマクロ記録の終了ができません。フォルダ指定までのマクロでないと他の文字列に使えません。 リンク設定の途中でマクロ記録を終了する方法はないでしょうか?
- ベストアンサー
- オフィス系ソフト
- エクセルでハイパーリンクを連続的に設定する方法(マクロをなるべくなら使わない方法)
エクセルでハイパーリンクを設定し、PDFファイルが開くように設定するのですが、 エクセルのセル リンク先 A0001 ⇒ \ディレクトリ\A0001.pdf A0002 ⇒ \ディレクトリ\A0002.pdf ・・・ というようになっているので、一つ一つリンク先を入力しないで、自動で連続的にリンク先を設定することはできるでしょうか? マクロを使ったことがないので、マクロを使ってしかできない場合は、その方法を教えてください!!!! Windows2000/Office2000 使用
- 締切済み
- オフィス系ソフト
- excel ハイパーリンク マクロ
excelのA1からA10の各セルの中に自分のPCの中のあるファイルのアドレスが入っているものとします。 そのときマクロを動かすことでそれをハイパーリンクに変えるにはどんなマクロを書けばいいでしょうか。 いちいち手で張るのはめんどうなことと、ときどきリンクが壊れることがあってマクロで一発でやりたいのです。
- ベストアンサー
- オフィス系ソフト
- Excelのハイパーリンク埋め込みを簡単に作業するには?
Excelのハイパーリンク埋め込みを簡単に作業するには? お世話様です。EXCEL2003でつまづいて、投稿させていただきました。 セルA列に、記載されているフォルダパス、ファイル名へのハイパーリンクを、セルB列に埋め込みたいのですが、その作業が数百個あります。地道にリンクするのがひとつの選択ですが、できれば楽にしたいです。 セルA | セルB c:\file-1.txt | c:\file-1.txtへのハイパーリンク c:\file-2.txt | c:\file-2.txtへのハイパーリンク c:\file-3.txt | c:\file-3.txtへのハイパーリンク * c:\file-n.txt | c:\file-n.txtへのハイパーリンク これは、関数の類で実現できるものなのでしょうか。 それとも、VBAを紐解いて、「値の取得とハイパーリンクのメソッド、、」などをプログラミングする 術を学習すべきでしょうか。
- ベストアンサー
- その他MS Office製品
- excelのハイパーリンクについて教えてください
ファイル名:シート1のA列に曲名を入力して、そのセルにハイパーリンクを設定して動画が動くように指定しています。 新しくファイル名:シート2を作り、その中のセルに =[シート1.xls]Sheet1!$A$1 と入力しているのですが、曲名は取り込めるのですが、ハイパーリンクの情報が取り込めません。 シート2にシート1で指定した曲名とハイパーリンク情報を取り込む方法があればお教え下さい。 エクセルのバージョンは2002を使用しています。 全くの素人ですが宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- Excelの一括ハイパーリンクの設定を教えてください
ExcelのB列のセルには、絶対パスで指定されたエクセルのファイル名が入っています。たとえばC:\DATA\見積もり\鈴木様.xlsのようにはいっています。このB列の値にハイパーリンクさせて鈴木様.xlsのデータをExcelで開きたいのです。ただ、B列のデータ数が1000件ほどあるので一括でハイパーリンクを設定したいのです。宜しく、お願いします。 ためしに、ハイパーリンクの関数を使ってB1にそのままハイパーリンクを設定したら循環参照エラーとかになってしまいました。 Excel2003を使用しています。2007もあり。
- ベストアンサー
- オフィス系ソフト
- ハイパーリンクで前回値をひきつぐ方法
初心者です。 マクロはわからないので、「CTRL+K」で出した「ハイパーリンクの挿入」画面の操作を教えてください。 エクセル表で、大量のセルに別々のハイパーリンクを貼る作業中です。 関連するPDFがあるフォルダにそれぞれ飛ばしています。 その目的フォルダが深い階層にあって、「ハイパーリンクの挿入」画面で辿るのが大変です。 なのに、次のセルの「ハイパーリンクの挿入」で、また初め(エクセル表がある場所)から辿らないといけません。 「ハイパーリンクの挿入」で前回の状態をひきつぐ方法はないでしょうか。 関係資料が入っているフォルダまでとび、どんな資料ファイルがそろっているかわかるようにするのが目的です。 なので、ハイパーリンク先はファイルではなくフォルダです。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
早速のご回答ありがとうございます。 このプログラムで一応ハイパーリンクできました。 ありがとうございます。 重ねてお願いなのですが、セルの文字数は9~15文字でランダムに書かれています。 したがってPDFファイル名="Cell(i,1)"と*と& ".pdf"を使って完全一致させたいのですがどうすればいいでしょうか? 質問は締め切っておりませんので、ご回答いただけると非常に助かります。 よろしくお願い致します。 P.S 教えて!gooをはじめて使うので御礼のポイントを差し上げたいのですがどうすればよいでしょうか?