我想將工作簿1的工作表X(工作簿100)的工作表X中的A列和工作表Y中相同工作簿的A列複製到新的工作簿或打開的空工作簿。工作表X中的列應複製到特定工作表Xmerge的A列,而工作表Y中的列應轉到新工作簿中特定工作表Ymerge的A列。其他複製的列應該從左到右分別插入到列A和B,C等列。如何將多個工作簿中特定工作表中的列合併或複製到新工作簿?
由於有很多工作簿, VBA宏。
詳細信息:所有工作簿都位於一個文件夾中。不同列中已填充單元格的數量不相等,某些單元格可能不包含任何數據或錯誤數據。我使用Excel 2010.
我試圖修改以下宏代碼以適合我的需要,但不幸沒有成功。 (來源:https://msdn.microsoft.com/en-us/library/office/gg549168(v=office.14).aspx)
該宏將行復制到行而不是列到列。所以我想這個宏的一些變化可以解決這個問題。但是不管這個宏,我會感激每一個好幫手。
Sub MergeAllWorkbooks()
Dim SummarySheet As Worksheet
Dim FolderPath As String
Dim NRow As Long
Dim FileName As String
Dim WorkBk As Workbook
Dim SourceRange As Range
Dim DestRange As Range
' Create a new workbook and set a variable to the first sheet.
Set SummarySheet = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
' Modify this folder path to point to the files you want to use.
FolderPath = "C:\Users\Peter\invoices\"
' NRow keeps track of where to insert new rows in the destination workbook.
NRow = 1
' Call Dir the first time, pointing it to all Excel files in the folder path.
FileName = Dir(FolderPath & "*.xl*")
' Loop until Dir returns an empty string.
Do While FileName <> ""
' Open a workbook in the folder
Set WorkBk = Workbooks.Open(FolderPath & FileName)
' Set the cell in column A to be the file name.
SummarySheet.Range("A" & NRow).Value = FileName
' Set the source range to be A9 through C9.
' Modify this range for your workbooks.
' It can span multiple rows.
Set SourceRange = WorkBk.Worksheets(1).Range("A9:C9")
' Set the destination range to start at column B and
' be the same size as the source range.
Set DestRange = SummarySheet.Range("B" & NRow)
Set DestRange = DestRange.Resize(SourceRange.Rows.Count, _
SourceRange.Columns.Count)
' Copy over the values from the source to the destination.
DestRange.Value = SourceRange.Value
' Increase NRow so that we know where to copy data next.
NRow = NRow + DestRange.Rows.Count
' Close the source workbook without saving changes.
WorkBk.Close savechanges:=False
' Use Dir to get the next file name.
FileName = Dir()
Loop
' Call AutoFit on the destination sheet so that all
' data is readable.
SummarySheet.Columns.AutoFit
End Sub
該代碼幾乎是正確的,但正如我之前所說的,它將行復制到行而不是列到列。我如何修改它來處理列?
那裏是否存在特定的問題/問題?你有錯誤嗎?意外的結果?你對這段代碼中的一行或多行有什麼問題嗎? – CodeJockey
@CodeJockey具體問題似乎是它將行復制到行而不是列到列。 –
@CodeJockey Alex Knauth提到,上面的代碼對於複製行是正確的,但是我需要複製列。你知道如何做到這一點? – Xcell