- ベストアンサー
エクセルVBAハイパーリンクの自動設定について
はじめて質問させていただきます。 エクセルVBAハイパーリンクの自動設定についてですが A列にAAA、BBB、CCC、DDD・・・という文字列が入っています。 D:\dataというフォルダーにAAA-01、BBB-02、CCC-01、DDD-05 という名前のファイル(.DOC)が入っています。 A列の文字列にハイパーリンクを貼りたいのですがどうしたらよいでしょうか? AAAの文字にAAA-01.docのハイパーリンクを自動で貼る。 -01はファイルのバージョンで更新されたら-02、-03と変わって いくため頭から3文字があえばリンクを貼るようにしたいのです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>いくため頭から3文字があえばリンクを貼るようにしたいのです 簡単にはできません マクロでAAA-01.docをAAA-02.docに変えるとかは出来ますが 最終のバージョンが-03なのか-04なのかはマクロで自動で判断はできません 最終のバージョンの数字の部分だけでもどこかのセルに書き込むようにでもしないと無理だと思います ちょっと面倒ですが VBAを使えば出来るかも知れません VBAでAAA-??.docで、ワイルドカードを使ってファイル名の一覧を作成し、それをソート(大->小)します その一番上のファイルを最新と判断しリンクするという方法が考えられます
その他の回答 (2)
- ASIMOV
- ベストアンサー率41% (982/2351)
>Cells(i, 1) & "-??.doc これは無理です いきなりリンクアドレスにワイルドカードを書いても認識できません サンプルの様に、一旦セルにファイル名を取得してから、そのセルの値をリンクアドレスに設定します 最初の回答で「ちょっと面倒ですが」と書いたのはこの事↑なんですよ
お礼
ASIMOV様 「ちょっと面倒ですが」がようやく理解できました。 チャレンジしてみます。 スピーディーな回答、本当に助かりました。 ありがとうございました。
- ASIMOV
- ベストアンサー率41% (982/2351)
>ワイルドカードを使えば出来るのでしょうか? http://officetanaka.net/excel/vba/tips/tips36.htm こちら↑のサンプルが参考になると思います ファイル名を指定するときに 「AAA-??.doc」とするとAAA-01.docもAAA-02.docもAAA-03.docもリストアップされます もし一つしかないのであれば、最初のセルにそのファイル名が入りますので、そのファイルにリンクするようにVBAを組めば出来ると思います
お礼
ASIMOV様 早速のご対応ありがとうございます。 下記の用のものを作ってみたのですがリンク先が「AAA-??.doc」 となってしまい開けませんでした。 どこがおかしいのでしょうか? Sub リンク() Dim i As Integer For i = 1 To 4 Cells(i, 1).Select ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _ "D:\data\" & Cells(i, 1) & "-??.doc", TextToDisplay:=Cells(i, 1).Value Next End Sub
お礼
ASIMOV様 回答ありがとうございます。 説明不足で申し訳ありません。 D:\dataというフォルダーには最新バージョンしか入っていません。 ですからAAA-**.docというファイルは1つしかないことになります。 ご説明にありましたようにワイルドカードを使えば出来るのでしょうか?