*Excel 関連情報 **サンプルコード ***ADO を使ってシートを連結する方法 -複数シート/複数ファイルをマージするサンプル(merge_sheet.vbs) Option Explicit Dim g_strDIR Dim g_strMergeData ' マージ対象のデータフォルダ Dim g_strNewFile ' マージ先のファイル名 Dim g_strNewSheet ' マージ先のシート名 Main ' メイン プロシージャ Sub Main() g_strDIR = "D:\home\edu\hatena\merge_sheet\" ' このマクロがある場所 g_strMergeData = g_strDIR & ".\data" ' マージ対象のデータフォルダ g_strNewFile = g_strDIR & ".\merge.xls" ' マージ先のファイル名 g_strNewSheet = "[Sheet1$]" ' マージ先のシート名 ' 各シートをマージする MergeSheets End Sub ' 各シートをマージする Sub MergeSheets() Dim cn Dim rs Set cn = CreateObject("ADODB.Connection") cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & g_strNewFile & ";Extended Properties=Excel 8.0" Dim fs Set fs = CreateObject("Scripting.FileSystemObject") Dim folder Set folder = fs.GetFolder(g_strMergeData) Dim file Dim sheet Dim sheets() ' ファイルの数だけ処理を行う For Each file In folder.Files GetSheetNames file, sheets ' ファイル内の各シートを新しいシートに挿入する For Each sheet In sheets Dim strSQL strSQL = "INSERT INTO " & g_strNewSheet & " SELECT * FROM " & sheet ' INSERT 文を実行 cn.Execute strSQL Next Next End Sub ' 指定したファイルのシート名(複数シート名)を取得する Function GetSheetNames(ByVal file, ByRef sheets()) Dim app Set app = CreateObject("Excel.Application") app.Workbooks.Open file Dim i Dim nSheets nSheets = app.Worksheets.Count ReDim sheets(nSheets - 1) For i = 0 To nSheets - 1 ' "シート名"+"$" を配列に格納 sheets(i) = "[Excel 8.0;database=" & file & "].[" & app.Worksheets(i + 1).Name & "$]" Next app.Workbooks.Close Set app = Nothing End Function -ダウンロード #ref(merge_sheet.zip); ■ フォルダ構成 D:\HOME\EDU\HATENA\MERGE_SHEET │ macro.vbs … XLSマージスクリプト(VBScriptバージョン) │ macro.xls … XLSマージスクリプト(Excel/VBAバージョン) │ merge.xls … マージ先のファイル │ readme.txt … このファイル │ └─data … マージ対象ファイル aaa.xls bbb.xls ccc.xls -制限事項 --マージ対象の Excel ファイルは、すべてのシートにデータが入っている必要があります。 --空のシートがあるとエラーになります。ご注意下さい。 -はてな --http://www.hatena.ne.jp/1088413798 ---終わってしまったけど。 #comment