[[20150624151620]] 『選択しているセルをファイル名として開く』(miho) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『選択しているセルをファイル名として開く』(miho)

総括表というファイルのA列にファイル名が入力されています。
A列の選択しているセルをファイル名として、\testの中のフォルダー\a、\b、\cの3つのフォルダーのどれかに入っているファイルを探して開くことはできるのでしょうか?

過去ログから見つけた数式(下の)でやってみたんですけどできませんでした。

Sub OpenFiles()

     Dim r As Range
     For Each r In Selection
         Workbooks.Open "\test\" & r.Value
     Next
 End Sub

どこがいけないのか・・・?
ご存知の方がいるようでしたら教えてください。

< 使用 Excel:Excel2003、使用 OS:Windows8 >


 まず、 \Test\ というパス指定はできないね。
 cドライブ直下なら c:\Test\ でしょ?

 で、複数セルを選択していれば複数ブックを開くということ?
 それと、セルには、拡張子(.xlsxとか)も入っている?

(β) 2015/06/24(水) 16:01


よくわからないけれど
「\」マークって「" "」の中に入っててもいいの?
ダメだった気がするけど間違ってたらごめんなさい。

(通りすがりの超トーシロー) 2015/06/24(水) 16:14


 セルには 拡張子もセットされているという前提。元フォルダは C:\Test\ にしています。
 また A列に限らず選択されたセルをすべて対象にしています。

 Sub Test()
    Dim fPath As String
    Dim sPath As Variant
    Dim fName As String
    Dim ck As String
    Dim r As Range
    Dim ok As Boolean

    fPath = "C:\Test\"

    For Each r In Selection
        fName = r.Value
        ok = False
        For Each sPath In Array("a", "b", "c")
            ck = Dir(fPath & sPath & "\" & fName)
            If ck <> "" Then
                Workbooks.Open fPath & sPath & "\" & fName
                ok = True
                Exit For
            End If
        Next
        If Not ok Then MsgBox fName & " がみつかりません"
    Next

 End Sub

(β) 2015/06/24(水) 16:17


さっそくコメントをいただきありがとうございます。
さっき、返事を書いたのですが反映されなかったみたいなので
また書きます。

ファイルのあるとこは自分のPCぢゃなく、みんなで使ってるサーバです。
選択するセルはAれるのどれかいっこです。
それからセルの中の名前には(.xlsxとか)はついていません。
説明が下手ですみません。
(miho) 2015/06/24(水) 16:38


(β)さん ありがとうございます。
私がモタモタ返事を書いている間に数式を書いていただいていたんですね。

fPath = "C:\Test\"←っこを書き換えて試してみたんですけど
「○△□がみつかりません」って表示がでました。

>セルには 拡張子もセットされているという前提。
っということなので見つからないのだと思いますが
(.xlsxとか)がつかない方法を教えてくださいませんか。
どうかよろしくお願いします。
(miho) 2015/06/24(水) 16:56


 >>みんなで使ってるサーバです。

 ということは fPath = "\\サーバ名\hoge\Test\" といったように書き直したということですね。

 >>(.xlsxとか)がつかない方法を教えてくださいませんか。 

 fName = r.Value & ".xlsx" にして試してください。

(β) 2015/06/24(水) 17:40


 >>選択するセルはAれるのどれかいっこです

 ということならループの必要はないので、以下でいいですね。(パスは直してください)

 Sub Test2()
    Dim fPath As String
    Dim sPath As Variant
    Dim fName As String
    Dim ck As String
    Dim r As Range
    Dim ok As Boolean

    If Selection.Count <> 1 Or Selection.Column <> 1 Then
        MsgBox "A列の単一セルを選択して実行してください"
        Exit Sub
    End If

    fPath = "C:\Test\"

    fName = Selection.Value & ".xlsx"
    ok = False
    For Each sPath In Array("a", "b", "c")
        ck = Dir(fPath & sPath & "\" & fName)
        If ck <> "" Then
            Workbooks.Open fPath & sPath & "\" & fName
            ok = True
            Exit For
        End If
    Next
    If Not ok Then MsgBox fName & " がみつかりません"

 End Sub

(β) 2015/06/24(水) 17:46


(β)さん ありがとうございます。

私の間違いでA列ではなくB列でした、すみません。

B列にするには
If Selection.Count <> 1 Or Selection.Column <> 1 Then
1のところを2にすればいいのでしょうか?

たびたびすみません><
(miho) 2015/06/24(水) 18:17


 If Selection.Count <> 1 Or Selection.Column <> 2 Then 

 ですね。

(β) 2015/06/24(水) 18:55


(β)ありがとうございました。

Test()もTest2()もバッチリです♪
列を指定するやり方の方が間違いがなさそうなので
そちらを使わせていただくことにします^^

fPathやFor Each sPath In Array("a", "b", "c")を
変更することでいろいろな使い方ができそうです。
ほんとうにありがとうございました。

(miho) 2015/06/25(木) 08:56


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.