我需要用vbscript(而不是vba)完成此操作。我找不到如何做到這一點的任何例子。我已經有了vbs,可以完成我需要的所有Excel文件的主要處理,但是我需要的最後一部分僅僅是將駐留在兩個單獨的.xlsx文件中的兩個工作表合併到一個工作表中,並將它們合併到一個新的工作簿中。將兩個單獨的xlsx文件中的.xlsx工作表合併到一個新工作簿中的單個工作表中
我已經找到了使用vba將兩個文件合併到一個單獨的wb中的示例,但我需要它們在同一個工作表上並通過vbscript。它基本上就像兩張牀單的結合。它們都包含相同數量的列(6列)和相同類型的數據。基本上需要複製任一電子表格中的標題並粘貼到新的工作簿/工作表中,然後將所有數據複製到標題下的新工作簿/表單中。希望這是有道理的。任何幫助表示讚賞。
我對此很接近,這將兩個數據表放入同一個名爲「合併」的NEW工作簿中,但需要它將這些工作表合併爲一個。
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
你一直在這裏足夠長,知道你必須表現出努力。 – findwindow
我不認爲有必要發佈一堆不密切的代碼。我描述了OP中的努力。只是尋找一些指導。我一直在研究這個,現在嘗試了許多不同的事情2天。我作爲最後的手段發佈在這裏。最近,我的帖子一直在生成與你一樣的回覆,這迫使我在自己或其他論壇上找到不太理想的解決方案。不是很有幫助。然而,我在上面發佈了一些代碼,這在球場上有些不同。但是,缺乏很多。 – user3108489
'最近,我的帖子一直在產生像你這樣的回覆',這應該是你的一些反思的指示? '沒想到有必要發佈一堆不緊密的代碼'所以你只是要求SO代碼給你,而不是這樣。嘗試編碼的東西,然後回來問一個更好的問題。 – findwindow