質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
87.20%
VBA

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

ハイパーリンク

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

解決済

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

memem12
memem12

総合スコア12

VBA

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

ハイパーリンク

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

1回答

0評価

0クリップ

920閲覧

投稿2020/12/16 02:04

編集2020/12/17 07:16

前提・実現したいこと

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

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

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

該当のソースコード

VBA

Sub Test Dim i As Long, j As Long, k As Long, r As Long Dim c As String 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 End Sub

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

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

退会済みユーザー

退会済みユーザー

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

VBA

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

ハイパーリンク

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