これをvbscript(vbaではなく)で達成する必要があります。これを行う方法の例が見つかりません。必要な Excel ファイルに対するすべての主要な処理を行う vbs がありますが、最後に必要なのは、2 つの別々の .xlsx ファイルにある両方のワークシートを単一のワークシートに新しいワークブックにマージすることだけです。
vbaを使用して2つのファイルを別々のシートで単一のwbにマージする例を見つけましたが、同じシートとvbscriptを介してそれらが必要です。基本的には 2 枚のシートを合わせたようなものです。どちらにも、同じタイプのデータを持つ同じ数の列 (6 列) が含まれています。基本的に、スプレッドシートのいずれかからヘッダーをコピーして新しいワークブック/ワークシートに貼り付け、それぞれのすべてのデータをヘッダーの下の新しいワークブック/シートにコピーする必要があります。これが理にかなっていることを願っています。どんな助けでも大歓迎です。
これは、2 つのデータ シートを「マージ」と呼ばれる同じ新しいワークブックにもたらしますが、シートを 1 つにマージする必要があります。
Set objExcel = WScript.CreateObject ("Excel.Application")
objExcel.Visible = false
strFileName = "c:\excel\merged.xlsx"
Set objWbA = objExcel.WorkBooks.open("c:\excel\wb1.xlsx")
Set objWbB = objExcel.WorkBooks.open("c:\excel\wb2.xlsx")
Set objWorkbook = objExcel.Workbooks.Add()
objwba.worksheets(1).copy _
objWorkbook.worksheets(1)
objwbb.worksheets(1).copy _
objWorkbook.worksheets(2)
objWorkbook.SaveAs(strFileName)
objWorkbook.close
objWbA.Close True
objWbB.Close True
objExcel.Quit
Set objExcel = Nothing
==========================
これが私が思いついた解決策です(CSV出力を使用しました):
Option Explicit
Dim objExcel
Dim strFilename
Dim objWbA
Dim objWbB
Dim Lastrow
Dim Lastrow1
Dim objWorkbook
Dim objSheeta
Dim objSheetb
Set objExcel = WScript.CreateObject ("Excel.Application")
objExcel.Visible = false
objExcel.displayalerts = false
strFileName = "c:\excel\merged.csv"
Set objWbA = objExcel.WorkBooks.open("c:\excel\wb1.xlsx")
Set objSheeta = objWbA.Sheets("wb1")
Set objWbB = objExcel.WorkBooks.open("c:\excel\wb2.xlsx")
Set objSheetb = objWbB.Sheets("wb2")
Set objWorkbook = objExcel.Workbooks.Add()
Const xlUp = -4162
Const xlPasteValues = -4163
Const xlPasteFormats = -4122
Const xlPasteValuesAndNumberFormats = 12
with objSheeta
Lastrow = .Cells(objSheeta.Rows.Count, 1).End(xlUp).Row
.Range("B1:F" & Lastrow).Copy
end with
objWorkbook.Worksheets("Sheet1").Range("A1").PasteSpecial xlPasteValuesAndNumberFormats
with objSheetb
Lastrow1 = .Cells(objSheetb.Rows.Count, 1).End(xlUp).Offset(1, 0).Row
.Range("B2:F" & Lastrow1).Copy
end with
objWorkbook.Worksheets("Sheet1").Range("A" & Lastrow1).PasteSpecial xlPasteValuesAndNumberFormats
'===================================
objExcel.CutCopyMode = False
objExcel.ScreenUpdating = True
objWorkbook.SaveAs(strFileName), 6
objWorkbook.close True
objWbA.Close True
objWbB.Close True
objExcel.Quit
Set objExcel = Nothing