ここから本文です

今カーソルがあっているセルの値を取得して、それと同じ名前のファイル名を開く方...

may********さん

2017/8/3014:01:53

今カーソルがあっているセルの値を取得して、それと同じ名前のファイル名を開く方法はありますでしょうか。

いつもお世話になっております。

ネットで検索して、Excel VBAにて下記のよう

な指示を書きました。

Dim OpenFileName As String
ChDrive "C"
ChDir "C:\Users\mmmm\Documents"
OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")

If OpenFileName <> "False" Then
Workbooks.Open OpenFileName
Else
MsgBox "キャンセルされました"
End If

で、これはCドライブのマイドキュメントからファイルを参照するウィンドウが開いている状態ですが、
ここで、今カーソルが合っているセルの値を取得して、それと同じファイル名のExcelブックを開くことは可能でしょうか。
できれば、

開きたいファイル名のセルにカーソルを合わせる

マクロ起動

ファイルが開く

まで一気にもっていきたいのですが、もし無理であればこのたちあがったウィンドウのファイル名入力箇所に、
そのセルの値(開きたいファイル名)がペーストされている
までできればもう万々歳です。

添付画像で説明させていただきますと、
今C5の「ABC_SSSSSS」にカーソルがあっているので、
マイドキュメントの中にある「ABC_SSSSSS.xlsx」を開きたい、という感じです。

すみません、説明不足な点があるかと思いますので、
足りない内容があればご指示ください。

ご教示よろしくお願いいたします。

補足補足です^^;

カーソルの位置(列・行)はコロコロ変わりますので、例のようにC5とは限りません…。

If OpenFileName,カーソル,false&amp;quot,Excel VBA,ファイル名,Then Exit Sub,Desktop&amp;quot

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
71
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

sk_********さん

2017/8/3014:50:17

こんな感じで良いと思います。
標準モジュールに貼り付けて、ボタンにマクロ登録し、使用ください。

Sub Sample()
If ActiveCell.Value = "" Then Exit Sub
'デスクトップパス
Dim objWShell As Object, DeskTop_Path As String, buf As String, strFile As String
Set objWShell = CreateObject("WScript.Shell")
DeskTop_Path = objWShell.SpecialFolders("Desktop")
strFile = DeskTop_Path & "\" & ActiveCell.Value & ".xlsx"
buf = Dir(strFile)
If buf = "" Then Exit Sub
Workbooks.Open strFile
End Sub

このコードは、デスクトップにある.xlsxファイルが対象です。
マイドキュメント内のファイルを対象とする場合は、
DeskTop_Path = objWShell.SpecialFolders("Desktop")の部分を
DeskTop_Path = "C:\Users\mmmm\Documents"(※マイドキュメントのパス)に変えます。


【簡単な解説】

If Target.Value = "" Then Exit Sub
アクティブセルが空白の場合、マクロ終了

DeskTop_Path = objWShell.SpecialFolders("Desktop")
デスクトップのパスを取得

buf = Dir(strFile)
ファイルの有無を確認

If buf = "" Then Exit Sub
bufが空だと、ファイルは無し

Workbooks.Open strFile
ファイルを開く

質問した人からのコメント

2017/8/30 14:56:15

ありがとうございます!!
今パスを書き換えて実行したら、願いどおりの動きをしてくれました!!

補足説明を足したのですが、sk_tamotuさんが書いてくださったように列は固定したほうがいいですね。
でないと、他の列にカーソルがある状態で起動したらおかしくなりますものね^^;

そこまで意識していなかったので本当に助かりました!
ありがとうございます^^

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる