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

解決済みの質問

excelからwordのファイル名を検索してリンクを貼りたいのです。

excelからwordのファイル名を検索してリンクを貼りたいのです。

1つのexcelファイルの中に数千行のデータが入っています。
そこから、excel1行に対して1つずつ、wordのファイル名にリンクを貼りたいのですが、
excelのデータとwordのファイル名で共通しているのは、excelにあるデータ(ABCDE)に対して、wordのファイル名は(CDEFG)と、全部が共通しているのではなく、3つだけ共通の文字列があるだけです。
(※各A,B,C,D,E,F,Gは文字列。A=日付、B=名前 など。) 
    
関数でできるのか、マクロを組まなきゃいけないのか、それすらもわかりません。

こんな説明でわかりますか?

マクロはほとんど初心者なので、詳しく教えて頂けると助かります。

投稿日時 - 2010-05-22 01:19:56

QNo.5912309

すぐに回答ほしいです

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

こんなものでいかがでしょうか。
Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
Dim myPath As String, fileName As String

'名前,住所,電話番号がB,C,D列にあり、B & C & D & ?がファイル名とする
'B列の名前の上でWクリックすると該当するファイルを開く
If target.Column <> 2 Then Exit Sub
If target.Value = "" Then Exit Sub
myPath = "C:\Documents and Settings\??????\"
fileName = target.Value & target.Offset(0, 1).Value & target.Offset(0, 2).Value
MsgBox fileName
fileName = Dir(myPath & fileName & "*.doc")
If fileName = "" Then Exit Sub
myPath = myPath & fileName
With CreateObject("Shell.Application")
.ShellExecute myPath
End With
End Sub

投稿日時 - 2010-05-27 21:33:47

お礼

お礼が遅くなり、大変申し訳ありません。

本当にありがとうございました!

試してみます。

投稿日時 - 2010-05-31 19:18:05

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

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

回答(3)

ANo.2

#1です。
そのままズバリの値で無くて結構ですので、具体的な例をお示し下さい。
>同じ行にA,B,C,D,Eがそれぞれ違う列に入っているということです。
>そして、wordのファイル名はその5つのセルの内、3つのセルが連なったファイル名なのです。
5つのセルから、任意の3つの組み合わせで形成されると言うことですか?
COMBIN(5,3)=10通りの組み合わせのいずれか?
それとも、A,B列は今回の課題には関係ないのでしょうか。
また、エクセルの列では無い謎のF,Gとは何なのでしょうか。

投稿日時 - 2010-05-24 21:24:57

補足

本当に毎度毎度ありがとうございます!
そして、わかりづらい説明ですみません。。。

具体的な例を出して説明しますと、
excelは表になっているのですが、

日付  名前  住所  電話番号  生年月日  血液型
100524 田中 北海道  0112356987 19800407 B
100525 佐藤 愛知県  0522136947 19820530 O




とデータが続いています。

そして、excelの各行に1つwordのファイルが対応してて、そこにリンクしたいのですが、
wordのファイル名は、上の例で示した値を用いますと、

田中北海道0112356987赤色.doc
佐藤愛知県0522136947黄色.doc

のように
(名前)(住所)(電話番号)(色).doc
で固定です。
その他の(日付)(生年月日)(血液型)はwordファイル名には全く関係ありませんし、
wordファイル名にはexcelの表にはない(色)というものもくっついています。


これで、条件はわかりますでしょうか?

説明がわかりづらければ、何度でも説明しますので、宜しくお願いします。

投稿日時 - 2010-05-25 20:27:20

ANo.1

具体的なファイル名のイメージが湧きませんが、ご質問の額面通りなら下記で可能と思います。
値ABCDEのセルでダブルクリックすると、指定フォルダのCDE*.DOCを検索し、最初にみつかったものを開きます。該当ワードファイルは一個しか無い事が前提です。他に命名のルールがあるなら明示していただかないと、分かりません。

説明は出来かねますので、ワークシートのイベントマクロの解説はこちらをご覧下さい。
'http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html

Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
Dim myPath As String, fileName As String

'A列のみを対象とすると仮定
If target.Column <> 1 Then Exit Sub
If target.Value = "" Then Exit Sub
myPath = "C:\Documents and Settings\??????\"
fileName = Dir(myPath & Right(target.Value, 3) & "*.doc")
If fileName = "" Then Exit Sub
myPath = myPath & fileName
With CreateObject("Shell.Application")
.ShellExecute myPath
End With
End Sub

投稿日時 - 2010-05-22 23:04:28

補足

早速回答ありがとうございます!
説明がわかりにくくて、すみません。

excelに入っているデータは、ABCDEと申しましたが、
A,B,C,D,Eはそれぞれ別のセルに入っています。
同じ行にA,B,C,D,Eがそれぞれ違う列に入っているということです。

そして、wordのファイル名はその5つのセルの内、3つのセルが連なったファイル名なのです。

これだと、先に回答して頂いたのと、少し変わりますよね?

すみませんが、回答をお待ちしております。

投稿日時 - 2010-05-24 20:22:32

あなたにオススメの質問