• ベストアンサー

ファイル内のエクセルにマクロを使いたい

パソコン初心者です。 エクセルのツールのVBでマクロを組みました。 それをファイル内のエクセルに使いたいです。 今は一つ一つエクセルを開いて、シートも一枚ずつ開いてマクロを使っています。 ファイル内の全エクセルにまとめてマクロを使える方法はありませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

> ファイル内の全エクセルにまとめてマクロを使える方法はありませんか? フォルダー内の間違いですよね? 同一フォルダー内に以下のコードを記述したエクセルファイル(ブック)をおいて試してみてください。 Sub test() Dim mb, myfdr, wb, fname, st, i, n '変数 Application.ScreenUpdating = False '画面更新を停止 Set mb = ThisWorkbook 'このブックをmbとする。 myfdr = ThisWorkbook.Path 'このブックがあるフォルダのパスをmyfdrとする。 fname = Dir(myfdr & "\*.xls") 'フォルダ内のExcelブックを検索 Do Until fname = Empty 'ブックがある限り全て検索 If fname <> mb.Name Then 'ブック名がこのブックの名前でなければ Set wb = Workbooks.Open(myfdr & "\" & fname, UpdateLinks:=0) 'そのブックをLink更新なしで開く For Each st In wb.Worksheets '開いたブックの各シートにつき st.Activate i = i + 1 'シート数をカウント '処理するマクロをここに記述 Next st wb.Close (False) '開いたブックを保存せず無警告で閉じる n = n + 1 'ブック数をカウント End If fname = Dir 'フォルダ内の次のExcelブックを検索 Loop '繰り返す Application.ScreenUpdating = True '画面更新停止を解除 MsgBox n & "件のブックで、合計" & i & "枚のシートを処理しましました。" End Sub

その他の回答 (2)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

#2です。 さきほどのコードは開いた各ブックからデータを取得して閉じることをイメージして書きましたので wb.Close (False) '開いたブックを保存せず無警告で閉じる としましたが、各ブックに処理をするのであれば保存しないと意味ないですよね。 もしそうなら、 wb.Close (True) '開いたブックを保存して無警告で閉じる に変えてください。

marippe726
質問者

お礼

回答ありがとうございます!! 早速使わせてもらいました。 面倒な作業が一瞬で終わり、感動しました。 ありがとうございました。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

いろんな方法がありますが、 Dir関数 を使ってはいかがでしょう? Dim fol As String Dim b As String Dim wb As Workbook fol = D:\test" ' フォルダの指定 b = Dir(fol & "\*.xls") 'ファイルの抽出 Application.ScreenUpdating = False Do While b <> "" '該当する全てのファイル Set wb = Workbooks.Open(fol & "\" & b) 'ブックとして開く MsgBox wb.Name & vbCrLf & wb.Worksheets(1).Cells(1, 1).Value 'ブックに対する処理 wb.Close , True 'ブックを閉じる b = Dir() Loop Application.ScreenUpdating = True

marippe726
質問者

お礼

回答ありがとうございます!! コピーして使ってみたのですが・・・失敗してしまいました(泣) 自分のあまりのできなさに泣けてきます・・・。 でももう一度内容をよく見てチャレンジしてみます!ありがとうございました!!!!

関連するQ&A