前提・実現したいこと
昨日まで特定の列にハイパーリンク先にある自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文を入れるとアドレスが見つからないのかハイパーリンクは作られませんでした。
日本語が非常に怪しいので事実確認です。
【前提】
1.提示されたマクロによってD列にハイパーリンクが生成される。
2.生成されたハイパーリンクをクリックしてもリンク先のファイルを開けない。
【聞きたいこと】
ハイパーリンクをクリックしてファイルを開きたい。どうすればいいか。
ということですか。
上記認識に相違がなければ、ハイパーリンクをクリックした時に発生する事象を正確に提示下さい。
ファイルを開けない事実だけは把握しましたが、
リンクをクリックしても何も起こらないとか、
エラーが出てファイルが開けないとか、情報が必要です。
後、エラーが出ているならその内容。
エクセル?のバージョンなどもあった方が確実です。
質問投稿時にどんな情報を提示するべきか表示されますよね。
それに従って下さい。
・リンクをクリックすると「指定されたファイルを開くことができません」と表示されます。
・Excel2013で動かしています。
その内容であれば、ネットで調べれば対処法・確認事項が沢山見つかります。
色々と試した結果上手くいかないから質問をしているという認識で相違ないですか。
相違なければ確認した内容、試した内容とその結果を追記して下さい。
これらも提示するべき情報として案内されていると思います。
本件、基本的に我々の手元では正確に事象の再現ができません。
つまり、我々の手元では検証ができません。原因が探れません。
諸々の検証や確認をあなたの手元で行う必要があります。
また、本件の原因は現状提示されている情報からは一意に指摘できません。
この状況で考え得るすべての可能性に対してこちらから確認・検証事項を提示するのは容量が悪いです。
まずは手元の環境を踏まえてご自身で確認頂き、
その結果を報告頂ければ詳しい方が回答下さると思います。
後、確認手段や判断の根拠も提示して下さい。
追記頂いた様ですが、参考にされたサイトの対処は本件と関係ないのではないかと。
リンク切れなんですか。
本件、マクロを実行した結果ハイパーリンクが生成されて、
それが正常に動作しないという話ではないですか。
後ハイパーリンクの基点も関係ないです。
元々絶対パスが指定されているでしょう。
ただ適当に何らかのアクションを起こすだけでは意味がないので、
対処法の意味を考えた方がいいです。
でないと、何の意味もないことをやってるだけになってしまいます。
前述しましたが、原因が何であるかの切り分けが必要だから対応を依頼しました。
例えば、生成されたリンクを他のファイルにコピーして、そこからリンクが正常に動作するならマクロが組み込まれたファイル自体に原因があると考えられます。
逆に、他のファイルからもリンクが正常に動作しないならリンク先のファイルに原因があると考えられます。
エクセル以外のファイルからは正常に開けてあらゆるエクセルのファイルから正常に開けないならアプリ起因の問題かもしれません。バージョンもちょっと古いですし。
もちろん一概には言えませんが、切り分けの指標になります。
また、「パスが正しいはず」みたいなことが本文に記載されていますが、
多分とか、はずとかの情報はいらないです。
これも前述しましたが、確認手段とそう判断した根拠を正しく提示して下さい。
例えば、
クリックしたリンクに今現在設定されているハイパーリンクのパスを取得して、そのパスが「xxx」だった。そのパスをエクスプローラで叩くとリンク先のファイルが正常に開いた。
というのであれば、確かにパスは合っていると判断できます。
その様な情報を提示下さい。
ちなみに、確実にIfステートメントには何の問題もないです。
If ステートメントを正常に通過したから
ActiveSheet.Hyperlinks.Add Anchor:=Range("D" & r), Address:="C:\data\リスト\" & s & " .xlsm", TextToDisplay:=s
が実行されてハイパーリンクが生成されます。
ちなみに生成されることは手元で確認していますし、
そもそも生成されなければハイパーリンクをクリックできないでしょう。
追記2について
別ファイルで試されたIF文とActiveSheet.Hyperlinks.Add Anchor:のあたりを
実際のコードのコピペで教えていただけますか?
可能ならファイル名もあれば嬉しいです。
別ファイルも同じソースコードで走らせました。
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
回答1件
あなたの回答
tips
プレビュー