[[20210916171828]] 『同一フォルダないで拡張子がcsv、xlsx、xlsmでも刀x(八幡の藪知らず) ページの最後に飛ぶ

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

 

『同一フォルダないで拡張子がcsv、xlsx、xlsmでも読み込めるようにしたいのですが。』(八幡の藪知らず)

こんにちは
初歩的なことをお尋ねします。

同一フォルダー内にある文字列「SP」を含んだファイルを開くマクロですが
拡張子が、csv、xlsx、xlsmのどれであっても問題なく開けるようにするには
どのように書けばよろしいですか。今はcsvだけを対象に

Workbooks.Open ThisWorkbook.Path & "\*SP*.csv"

としていますが、これに加えてできるでしょうか。

よろしくお願いいたします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


拡張子が何であれファイル名を指定する必要は有ります。
(γ) 2021/09/16(木) 17:38

aaa = dir(ThisWorkbook.Path & "\*SP*.*")

Workbooks.Open ThisWorkbook.Path & "\" & aaa

エラー等判定無し
(ah) 2021/09/16(木) 17:39


どうもありがとうございます。
早速試してみます。
(八幡の薮知らず) 2021/09/16(木) 18:46

■1
>Workbooks.Open ThisWorkbook.Path & "\*SP*.csv" としていますが〜
既に指摘がありますが、「Workbooks.Open」にワイルドカードは使えなかったはずなので、先にファイル名を特定しておく必要があるとおもいます。
(私の記憶違いであればごめんなさい)

■2
そういったファイルが無いなら問題はでないでしょうが、ahさんの提案だと↓のようなファイルがあった時に問題が生じるかもです

 0SPaa.doc
  ↑が先に見つかった場合、これを開こうとしてしまうため。

■3
なので、フォルダ内のファイルのうちファイル名に「SPを含む」ものを片っ端から取得して、拡張子が該当したら開くようにすればしたらよいと思います。

    Sub さんぷる()
        Dim ファイル名 As String
        Dim フラグ As Boolean

        Stop 'ブレークポイントの代わり

        ファイル名 = Dir(thisworbook.Path & "\*SP*")
        Do Until ファイル名 = ""
            Select Case LCase(Right(ファイル名, Len(ファイル名) - InStrRev(ファイル名, ".")))
                Case "csv", "xlsx", "xlsm"
                    Workbooks.Open ThisWorkbook.Path & "\" & ファイル名
                    フラグ = True
            End Select

            ファイル名 = Dir()
        Loop

        If Not フラグ Then MsgBox "該当ファイルなし"
    End Sub

(もこな2 ) 2021/09/17(金) 09:55


↑の訂正
 誤   ファイル名 = Dir(thisworbook.Path & "\*SP*")
 正   ファイル名 = Dir(Thisworkbook.Path & "\*SP*")

(もこな2 ) 2021/09/17(金) 09:57


コメント返信:

[ 一覧(最新更新順) ]


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