エクセルVBAの質問です。

あるフォルダにあるすべてのブックを、ひとつのブックにシートとしてまとめるにはどのような方法がありますか。
まとめられたブックの各シートが、もともとのブックといったイメージです。
よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/05/29 03:10:42
  • 終了:2008/05/29 17:16:21

回答(2件)

id:freemann No.1

freemann回答回数302ベストアンサー獲得回数462008/05/29 04:24:40

ポイント35pt

ThisWorkbookのところに以下のVBAを書きます。

なお、clinejpさんのエクセルのバージョンが分からないのですが2007でも動くものにしました。

http://q.hatena.ne.jp/1211998240

Public Sub CopyAllSheets()

Dim strPath As String

Dim index As Integer

Dim strFName As String

strPath = Application.GetOpenFilename

If strPath = "False" Then

Exit Sub

End If

index = InStrRev(strPath, "\")

strPath = Left(strPath, index)

strFName = Dir(strPath & "*.xls*") 'ここで拡張子が2007タイプでも読み込むようになっています。

Do While strFName <> ""

CopySheetsInBook (strFName)

strFName = Dir()

Loop

End Sub

Private Sub CopySheetsInBook(strFName As String)

Dim NumOfSheets As Integer

Dim iSheets As Worksheet

NumOfSheets = Workbooks(1).Sheets.Count

Workbooks.Open strFName

With Workbooks(2)

For Each iSheets In .Sheets

iSheets.Copy after:=Workbooks(1).Worksheets(NumOfSheets)

NumOfSheets = NumOfSheets + 1

Next

.Saved = True

.Close

End With

End Sub

id:clinejp

大変参考になりました。

エクセル2002ですが動きましたありがとうございます。

2008/05/29 17:15:51
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692008/05/29 08:16:17

ポイント35pt

指定されたフォルダのブックの最初のシートを一つのブックにまとめるマクロです。

Sub Macro()
    'フォルダのパスを指定してください
    Const foldPath As String = "C:\Documents and Settings\hogehoge\デスクトップ\test"
    Dim Filename As String
    Dim wb As Workbook
    
    Filename = Dir(foldPath & "\*.xls", vbNormal)
    Do While Filename <> ""
        Set wb = Workbooks.Open(foldPath & "\" & Filename)
        wb.Worksheets(1).Copy before:=ThisWorkbook.Sheets(1)
        ThisWorkbook.Worksheets(1).Name = Left(Filename, Len(Filename) - 4)
        wb.Close
        Filename = Dir()
    Loop
End Sub

http://q.hatena.ne.jp/

id:clinejp

動きました。

ありがとうございます!

2008/05/29 17:15:54
  • id:clinejp
    すみません
    関連質問なのですが、2の回答者の方スクリプトの中で、読み取った(結合した)ファイル(ブック)をそのタイミングで消去してしまうことはできますでしょうか。
  • id:SALINGER
    消去するのはあるフォルダにあるブックのほうでしょうか?まとめられたブックのほう?
  • id:SALINGER
    まとめられたブックを消去するのは意味が無いので、あるフォルダにあるブックならば
    下から4行目の wb.Close の次の行に
    Kill foldPath & "\" & Filename
    とすれば削除します。
  • id:clinejp
    イメージどおりのことできました。
    大変ありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません