こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel 他の複数ブック開くVBA 

お世話になります。田中と申します。

以前も同じ質問させていただきましたが、複数のブックを自動で開いて閉じるVBAロジックをご教授いただきましたく思います。

Excel VBAを使って下記(1)、(2)の処理を実現したいと思っております。
どなたかVBAロジックをご教授いただけませんでしょうか。

(1)集計.xlsxというブックがあります。このブックに[ファイル]というシートがありまして
A1のパス、B1にファイル名が記入されています。
この組み合わせのファイル数は可変ですが下記のように大体10個程度あります。
A2(パス)+B2(ファイル名)
A3(パス)+B3(ファイル名)
A4(パス)+B4(ファイル名)
A5(パス)+B5(ファイル名)
・・・
(2)このシートに[開く]というボタンを配置して、クリックされたらA1(パス)+B1(ファイル名)でファイルを開いて何もしないですぐに閉じて、次のファイルを開いて閉じて、また次のファイルを開いて閉じて。。という動きをファイル数分繰り返したいのです。

どなたかご教授いただけますでしょうか。
よろしくお願い致します。

投稿日時 - 2015-12-15 18:59:05

QNo.9096307

すぐに回答ほしいです

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

こんにちは
それは本当に必要な処理なのでしょうか?
気になりますが、「test」で正しいファイルパスがイミディエイトウィンドウに
表示されるか確認しておいて下さい。
A列のデータの最後に円マークが無いならそれを追加するコードが必要です。
Sub test()
  Dim r As Range
  With ThisWorkbook.Worksheets("ファイル")
    For Each r In .Range("A1", .Range("A" & Rows.Count).End(xlUp))
      Debug.Print r & r.Offset(, 1)
'      Debug.Print r & "\" & r.Offset(, 1)
    Next
  End With
End Sub
正しいパスが表示されるなら、「test1」をフォームのボタンのマクロに登録して下さい。
Sub test1()
  Dim r As Range
  Dim b As Workbook
  Application.ScreenUpdating = False
  With ThisWorkbook.Worksheets("ファイル")
    For Each r In .Range("A1", .Range("A" & Rows.Count).End(xlUp))
      Set b = Workbooks.Open(r & r.Offset(, 1))
'      b.Save '保存しない場合はコメントアウト
      b.Saved = True
      b.Close
    Next
  End With
  Application.ScreenUpdating = True
End Sub

投稿日時 - 2015-12-16 09:02:26

お礼

ushi2015さん、ご連絡ありがとうございます!
ご教授いただきましたロジックにて希望していた動きが実現できました。

このたびは本当にありがとうございましたm(_ _)m

投稿日時 - 2015-12-16 15:56:22

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

「A」列に
D:\Programming\
D:\Programming\
D:\Programming\
D:\Programming\
D:\Programming\
D:\Programming\
「B]列に
Test_00.xlsx
Test_01.xlsx
Test_02.xlsx
Test_03.xlsx
Test_04.xlsx
Test_05.xlsx
と入っているとします。

この状況で

Sub Test()
For i = 1 To 6
f = Cells(i, 1).Value & Cells(i, 2).Value
Set a = Workbooks.Open(f)
Application.ScreenUpdating = True
Application.Wait Now + TimeValue("0:00:05")
a.Close
Next i
End Sub

とすると、それぞれのファイルを5秒ずつ、表示しました(Excel2016で確認)。

しかし、セルの部分は表示されたものの、「リボン」の部分が真っ白でしたが、一応、目的は達成していると思います。

あとは、環境によって、異なりますので、質問者の環境で「数分」になるように、この処理を繰り返せばいいと思います。

投稿日時 - 2015-12-16 13:06:28

お礼

Prome_Linさん、ご連絡ありがとうございます!

とてもご丁寧なご説明を添えていただきました誠にありがとうございました。
ご教授いただきましたロジックで実現できました!

この度は本当にありがとうございました!

投稿日時 - 2015-12-16 15:58:34

あなたにオススメの質問