こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル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文字があえばリンクを貼るようにしたいのです。
よろしくお願いします。

投稿日時 - 2009-05-08 08:50:52

QNo.4940796

すぐに回答ほしいです

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

>いくため頭から3文字があえばリンクを貼るようにしたいのです

簡単にはできません

マクロでAAA-01.docをAAA-02.docに変えるとかは出来ますが
最終のバージョンが-03なのか-04なのかはマクロで自動で判断はできません
最終のバージョンの数字の部分だけでもどこかのセルに書き込むようにでもしないと無理だと思います

ちょっと面倒ですが
VBAを使えば出来るかも知れません
VBAでAAA-??.docで、ワイルドカードを使ってファイル名の一覧を作成し、それをソート(大->小)します
その一番上のファイルを最新と判断しリンクするという方法が考えられます

投稿日時 - 2009-05-08 13:45:42

お礼

ASIMOV様
回答ありがとうございます。
説明不足で申し訳ありません。
D:\dataというフォルダーには最新バージョンしか入っていません。
ですからAAA-**.docというファイルは1つしかないことになります。
ご説明にありましたようにワイルドカードを使えば出来るのでしょうか?

投稿日時 - 2009-05-11 08:47:05

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>Cells(i, 1) & "-??.doc

これは無理です
いきなりリンクアドレスにワイルドカードを書いても認識できません

サンプルの様に、一旦セルにファイル名を取得してから、そのセルの値をリンクアドレスに設定します

最初の回答で「ちょっと面倒ですが」と書いたのはこの事↑なんですよ

投稿日時 - 2009-05-11 10:57:56

お礼

ASIMOV様
「ちょっと面倒ですが」がようやく理解できました。
チャレンジしてみます。
スピーディーな回答、本当に助かりました。
ありがとうございました。

投稿日時 - 2009-05-11 11:27:39

ANo.2

>ワイルドカードを使えば出来るのでしょうか?

http://officetanaka.net/excel/vba/tips/tips36.htm

こちら↑のサンプルが参考になると思います
ファイル名を指定するときに
「AAA-??.doc」とするとAAA-01.docもAAA-02.docもAAA-03.docもリストアップされます
もし一つしかないのであれば、最初のセルにそのファイル名が入りますので、そのファイルにリンクするようにVBAを組めば出来ると思います

投稿日時 - 2009-05-11 09:41:15

お礼

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

投稿日時 - 2009-05-11 10:42:40

あなたにオススメの質問