0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

フォルダ内にある狙ったファイルをひたすら開きまくるマクロ

Last updated at Posted at 2018-06-08

いつもは写真台帳しか作っていない私が、珍しくフォルダとを取り扱ったので備忘録としてメモしておきます。

とりあえずコードから・・・

エクセル開くよ

Sub フォルダ指定()
    Dim folder, filepath, path, エクセル名 As String
    Dim i As Integer
    Dim フォルダー(100) as Variant
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = True Then
            path = .SelectedItems(1)
        End If
    End With
    If path = "" Then
        MsgBox ("キャンセルしました")
        End
    End If

    i = 0
    
    path = path & "\"
    folder = Dir(path, vbDirectory)
    Do While Len(folder) > 0
        If GetAttr(path & folder) And vbDirectory Then
            If folder <> "." And folder <> ".." Then
                フォルダー(i) = folder
                i = i + 1
            End If
        End If
    folder = Dir()
    Loop
    
    i = 0
    
    Do While フォルダー(i) <> ""
        エクセル名 = Dir(path & フォルダー(i) & "\" & "*" & "ここに検索したいエクセルの名前を指定する" & "*")
        filepath = path & フォルダー(i) & "\" & エクセル名
        If エクセル名 <> "" Then
            Workbooks.Open Filename:=filepath
            "何か開いたエクセルで処理をしたければここに処理を記述する"
        End If
    i5 = i5 + 1
    Loop
End Sub

ざっと要点としては
1.application.filedialog(msofiledialogfolderpicker)にてフォルダを指定する。
2.dir関数で指定したフォルダの中にあるファイルorフォルダをすべてチェックしに行く
  └dir関数でフォルダを指定すると一番最初に呼び出されるフォルダの名前がなぜか"."と".."と順に呼び出されるためif文で回避
   └ひたすらフォルダー()という配列に呼び出した名前を格納する。
3.Do While の次の文のエクセル名=というところは Dirのプロパティを見てもらった方が早いかも
  とりあえずはまったのがDirを複数回するとフォルダがもどれねぇ!!!戻るすべは有るのだろうけどもChDirとかでごり押さなきゃだめかも?やり方を詳しく調べていないのであしからず・・・。
  ここに検索したいエクセルの名前を指定するの前後に"*"がある理由としては拡張子がエクセル以外フォルダに絶対はいらない仕様で作っていたので必要に応じて変えてクレメンス。
 下手するとメモ帳とかの名前も引っ張ってきちゃうかも

相変わらずfor文が使えずDoLoopでゴリ押していますが恐らくFor分の方がすっきりしそう

以上はまった部分のメモと備忘録でした。

※色々とコードの中に表に出しちゃいけない部分があったため、一部Qiita上で書き直しているので変数の宣言とか間違ってたらごめんなさい!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?