🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

ハイパーリンク

ハイパーリンクとは、ハイパーテキストにおいて、複数の文書を結び付ける役割を担う「参照」である。単にリンクとも呼びます

Q&A

解決済

1回答

1362閲覧

動いていたハイパーリンクが機能しない

memem12

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

ハイパーリンク

ハイパーリンクとは、ハイパーテキストにおいて、複数の文書を結び付ける役割を担う「参照」である。単にリンクとも呼びます

0グッド

0クリップ

投稿2020/12/16 02:04

編集2020/12/17 07:16

前提・実現したいこと

昨日まで特定の列にハイパーリンク先にある自PC内別ファイルから値を呼び出せるリストを作っていました。
アドレスが正しいにもかかわらずハイパーリンク先のファイルが呼び出せなくなりました。
どなたか詳しい方、ご教授お願いします。

発生している問題・エラーメッセージ

指定されたファイルを開くことができません

該当のソースコード

VBA

1Sub Test 2 Dim i As Long, j As Long, k As Long, r As Long 3 Dim c As String 4 5 6 r = 3 7 For i = 1 To 2 8 c = Chr(i + 67) 9 For j = 2 To 3 10 For k = 1 To 4 11 12 Dim s As String 13 s = "A" & c & "-" & j & "-" & k 14 Range("D" & r).Value = s 15 16 If Dir("C:\data\リスト\" & s & ".xlsm") <> "" Then 17 18 Range("A" & r).Formula = "='C:\data\リスト[" & s & ".xlsm]" & s & "'!H6" 19 ActiveSheet.Hyperlinks.Add Anchor:=Range("D" & r), Address:="C:\data\リスト\" & s & " .xlsm", TextToDisplay:=s 20 Range("D" & r).Interior.Color = RGB(204, 255, 204) 21 End If 22 23 r = r + 1 24 Next k 25 Next j 26 Next i 27End Sub

補足情報(FW/ツールのバージョンなど

アドレスをエクスプローラーで叩くと正常に開けたため、間違いはありません。
###追記
ハイパーリンクが生成されたセルを他のブックにコピーしたところ、開けませんでした。
Wordからハイパーリンクを設定すると正常に開けるので、アプリ自身の問題かと思いましたが
問題のファイルでHYPERLINK関数を使ったり、手動でハイパーリンクを設定すると正常に開けるので
自分の書き方に問題があるのかと思います。
###追記2
別ファイルにて動作させたところ、ActiveSheet.Hyperlinks.Add Anchor:=Range("D" & r), Address:="C:\data\リスト" & s & " .xlsm", TextToDisplay:=sで正常にハイパーリンクを作り、それを開くことは確認できました。
しかしIf文を入れるとアドレスが見つからないのかハイパーリンクは作られませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/12/16 03:57 編集

日本語が非常に怪しいので事実確認です。 【前提】 1.提示されたマクロによってD列にハイパーリンクが生成される。 2.生成されたハイパーリンクをクリックしてもリンク先のファイルを開けない。 【聞きたいこと】 ハイパーリンクをクリックしてファイルを開きたい。どうすればいいか。 ということですか。 上記認識に相違がなければ、ハイパーリンクをクリックした時に発生する事象を正確に提示下さい。 ファイルを開けない事実だけは把握しましたが、 リンクをクリックしても何も起こらないとか、 エラーが出てファイルが開けないとか、情報が必要です。 後、エラーが出ているならその内容。 エクセル?のバージョンなどもあった方が確実です。 質問投稿時にどんな情報を提示するべきか表示されますよね。 それに従って下さい。
memem12

2020/12/16 04:04

・リンクをクリックすると「指定されたファイルを開くことができません」と表示されます。 ・Excel2013で動かしています。
退会済みユーザー

退会済みユーザー

2020/12/16 06:22 編集

その内容であれば、ネットで調べれば対処法・確認事項が沢山見つかります。 色々と試した結果上手くいかないから質問をしているという認識で相違ないですか。 相違なければ確認した内容、試した内容とその結果を追記して下さい。 これらも提示するべき情報として案内されていると思います。 本件、基本的に我々の手元では正確に事象の再現ができません。 つまり、我々の手元では検証ができません。原因が探れません。 諸々の検証や確認をあなたの手元で行う必要があります。 また、本件の原因は現状提示されている情報からは一意に指摘できません。 この状況で考え得るすべての可能性に対してこちらから確認・検証事項を提示するのは容量が悪いです。 まずは手元の環境を踏まえてご自身で確認頂き、 その結果を報告頂ければ詳しい方が回答下さると思います。 後、確認手段や判断の根拠も提示して下さい。
退会済みユーザー

退会済みユーザー

2020/12/16 15:25 編集

追記頂いた様ですが、参考にされたサイトの対処は本件と関係ないのではないかと。 リンク切れなんですか。 本件、マクロを実行した結果ハイパーリンクが生成されて、 それが正常に動作しないという話ではないですか。 後ハイパーリンクの基点も関係ないです。 元々絶対パスが指定されているでしょう。 ただ適当に何らかのアクションを起こすだけでは意味がないので、 対処法の意味を考えた方がいいです。 でないと、何の意味もないことをやってるだけになってしまいます。 前述しましたが、原因が何であるかの切り分けが必要だから対応を依頼しました。 例えば、生成されたリンクを他のファイルにコピーして、そこからリンクが正常に動作するならマクロが組み込まれたファイル自体に原因があると考えられます。 逆に、他のファイルからもリンクが正常に動作しないならリンク先のファイルに原因があると考えられます。 エクセル以外のファイルからは正常に開けてあらゆるエクセルのファイルから正常に開けないならアプリ起因の問題かもしれません。バージョンもちょっと古いですし。 もちろん一概には言えませんが、切り分けの指標になります。 また、「パスが正しいはず」みたいなことが本文に記載されていますが、 多分とか、はずとかの情報はいらないです。 これも前述しましたが、確認手段とそう判断した根拠を正しく提示して下さい。 例えば、 クリックしたリンクに今現在設定されているハイパーリンクのパスを取得して、そのパスが「xxx」だった。そのパスをエクスプローラで叩くとリンク先のファイルが正常に開いた。 というのであれば、確かにパスは合っていると判断できます。 その様な情報を提示下さい。 ちなみに、確実にIfステートメントには何の問題もないです。 If ステートメントを正常に通過したから ActiveSheet.Hyperlinks.Add Anchor:=Range("D" & r), Address:="C:\data\リスト\" & s & " .xlsm", TextToDisplay:=s が実行されてハイパーリンクが生成されます。 ちなみに生成されることは手元で確認していますし、 そもそも生成されなければハイパーリンクをクリックできないでしょう。
radames1000

2020/12/17 07:06

追記2について 別ファイルで試されたIF文とActiveSheet.Hyperlinks.Add Anchor:のあたりを 実際のコードのコピペで教えていただけますか? 可能ならファイル名もあれば嬉しいです。
memem12

2020/12/17 07:28

別ファイルも同じソースコードで走らせました。 ActiveSheetだけならどのファイルでもハイパーリンクができて正常に開けますし、If文も正しく通ります。 問題はこのコードだとハイパーリンクでファイルが開かない点です。 r = 3 For i = 1 To 2 c = Chr(i + 67) For j = 2 To 3 For k = 1 To 4 Dim s As String s = "A" & c & "-" & j & "-" & k Range("D" & r).Value = s If Dir("C:\data\リスト\" & s & ".xlsm") <> "" Then Range("A" & r).Formula = "='C:\data\リスト\[" & s & ".xlsm]" & s & "'!H6" ActiveSheet.Hyperlinks.Add Anchor:=Range("D" & r), Address:="C:\data\リスト\" & s & " .xlsm", TextToDisplay:=s Range("D" & r).Interior.Color = RGB(204, 255, 204) End If r = r + 1 Next k Next j Next i
guest

回答1

0

ベストアンサー

ここの

vba

1ActiveSheet.Hyperlinks.Add Anchor:=Range("D" & r), Address:="C:\data\リスト\" & s & " .xlsm", TextToDisplay:=s

.xlsmの前のスペースをとってみてください。

vba

1ActiveSheet.Hyperlinks.Add Anchor:=Range("D" & r), Address:="C:\data\リスト\" & s & ".xlsm", TextToDisplay:=s

投稿2020/12/17 07:30

radames1000

総合スコア1925

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

memem12

2020/12/17 07:35

自分も今気づいて直していました。 申し訳ございません。
退会済みユーザー

退会済みユーザー

2020/12/17 08:42

解決した様で何よりですが、 結局パスが間違ってたんですね。 しかもこの内容だと開示された情報から解決できましたね。 両名とも、お手数をお掛けしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問