複数のExcelファイルのシートを1つのExcelファイルにマージする方法は?


0

100個のExcelファイルを1つのExcelファイルにマージする必要があります。各Excelファイルをワークブック内の独自のワークシートにマージする必要があり、宛先ワークシートには元のファイルの名前(拡張子を除く)が必要です。これは可能ですか?


1
VBAを使用して実行できる必要があります。mrexcel.com/forum/excel-questions/...
TheUser1024

1
すでに何を持っていますか?どこに行き詰まっていますか?
Raystafarian

Powershellもこれを行うことができます。
ブライアン

回答:


5

さて、あなたはこれに努力しているようには見えませんが、これらのマクロはすでに書かれているので、検索している他の人に提供します。これらはExcel 2007で記述されており、より大きなプロセスの一部でした。

ファイル名のいずれかが31文字を超える場合、これは失敗します。Excelにはシート名の文字制限があります。

ワークシートの名前がファイル名に設定されているファイルを1つに結合します-

Sub CombineWSs()
Dim wbDst As Workbook
Dim wbSrc As Workbook
Dim wsSrc As Worksheet
Dim MyPath As String
Dim strFilename As String

    Application.DisplayAlerts = False
    Application.EnableEvents = False
    Application.ScreenUpdating = False

    MyPath = "C:\Documents and Settings\path\to"
    Set wbDst = ThisWorkbook
    strFilename = Dir(MyPath & "\*.xls", vbNormal)

    If Len(strFilename) = 0 Then Exit Sub

    Do Until strFilename = ""

            Set wbSrc = Workbooks.Open(Filename:=MyPath & "\" & strFilename)

            Set wsSrc = wbSrc.Worksheets(1)

            wsSrc.Copy After:=wbDst.Worksheets(wbDst.Worksheets.Count)

            wbSrc.Close False

        strFilename = Dir()

    Loop
    wbDst.Worksheets(1).Delete

    Application.DisplayAlerts = True
    Application.EnableEvents = True
    Application.ScreenUpdating = True

End Sub

シートを反復処理して、シート名の最後の5文字を​​削除します。.xlsx

Sub RenameWS()
Application.ScreenUpdating = False
Dim strName As String
Dim intLength As Integer

For Each Sheet In ActiveWorkbook.Worksheets
    strName = Sheet.Name
    intLength = Len(strName)
    strName = Left(strName, intLength - 5)
    Sheet.Name = strName

Next
Application.ScreenUpdating = True
End Sub

粗野ですが、非常に効果的です!
ツァウペトラ

これを実行すると、シートにはファイル名ではなく、コピーされるシートの名前が付けられます。
dockeryZ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.