0

500 個の XLS ファイルをすべて同じ構造でインポートする最も簡単な方法は何ですか?

または、すべての XLS ファイルを 1 つの XLS ファイルに結合しましたが、各シート名は XLS ファイル内で一意になりました。

4

1 に答える 1

0

仕事を完了するのに役立つこれら2つのVBAを見つけました。

1 つ目は、1 つのディレクトリ内のすべての XLS を 1 つの XLS に結合し、各 XLS ファイルに対して一意のワークシートを作成します。

Sub Merge_Multiple_XLS_Into_WorkSheets()
    Path = "C:\Folder\"
    Filename = Dir(Path & "*.xls")
    Do While Filename <> ""
        Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
        For Each Sheet In ActiveWorkbook.Sheets
        Sheet.Copy After:=ThisWorkbook.Sheets(1)
        Next Sheet
        Workbooks(Filename).Close
        Filename = Dir()
    Loop
End Sub

すべてのシートを 1 つに結合する 2 つ目

Sub Merge_Sheets_Into_One()
    Const sRANGE = "A2:Z100"
    Dim iSheet, iTargetRow As Long, oCell As Object, bRowWasNotBlank As Boolean
    Dim iTop, iLeft, iBottom, iRight As Long
    Sheets(1).Select: Sheets.Add
    Sheets(1).Select
    Cells.Select
    Selection.Clear
    bRowWasNotBlank = True
    For iSheet = 2 To ThisWorkbook.Sheets.Count: DoEvents
    For Each oCell In Sheets(iSheet).Range(sRANGE).Cells: DoEvents
    If oCell.Column = 1 Then
    If bRowWasNotBlank Then iTargetRow = iTargetRow + 1
    bRowWasNotBlank = False
    End If
    If oCell.MergeCells Then
    bRowWasNotBlank = True
    If oCell.MergeArea.Cells(1).Row = oCell.Row Then
    If oCell.MergeArea.Cells(1).Column = oCell.Column Then
    Sheets(1).Cells(iTargetRow, oCell.Column) = oCell
    iTop = iTargetRow
    iLeft = oCell.Column
    iBottom = iTop + oCell.MergeArea.Rows.Count - 1
    iRight = iLeft + oCell.MergeArea.Columns.Count - 1
    Sheets(1).Range(Cells(iTop, iLeft), Cells(iBottom, iRight)).MergeCells = True
    End If
    End If
    End If
    If Len(oCell) Then bRowWasNotBlank = True
    Sheets(1).Cells(iTargetRow, oCell.Column) = oCell
    Next oCell
    Next
    Sheets(1).Activate
End Sub

...これら 2 つの VBS スクリプトを実行した後は、MS-SQL Management Studio からデータのインポート ウィザードを実行するだけです。

お役に立てれば...

于 2013-05-17T05:24:40.320 に答える