我想從3個名爲Sub WB1,Sub WB2和Sub WB3的不同工作簿中將名爲「任務跟蹤」的工作表內容合併到單個主工作簿任務跟蹤工作表中。請幫忙。將來自不同工作簿的數據合併到主工作簿的特定工作表
共有4個工作簿,每個工作簿共12個工作表。
- 主簿
- 子WB1
- 子WB2
- 子WB3
我想從小組WB1合併來自 「任務跟蹤」(工作表名)的數據,分WB2並使用主工作簿中的Consolidate按鈕將Sub WB3轉換爲主工作簿。
我用下面的代碼,我從一些參考,但我得到運行時錯誤:1004請幫助。作爲 "Sub WB1.xlsm, Sub WB2.xlsm, Sub WB3.xlsm"
,如果你想給用戶給定的名稱來選擇文件,只有這樣,你必須使用一個用戶窗體
例如
Sub MergeSpecificWorkbooks()
Dim MyPath As String
Dim SourceRcount As Long, FNum As Long
Dim mybook As Workbook, BaseWks As Worksheet
Dim sourceRange As Range, destrange As Range
Dim rnum As Long, CalcMode As Long
Dim SaveDriveDir As String
Dim FName As Variant
'Change ScreenUpdating, Calculation and EnableEvents
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
'SaveDriveDir = CurDir
'ChDirNet "D:\DD_Task1\"
path = "D:\DD_Task1\"
'FName = Application.GetOpenFilename("Sub WB1.xls, Sub WB2.xls, Sub WB3.xls", MultiSelect:=True)
FName = Application.GetOpenFilename(filefilter:="Sub WB1.xlsm, Sub WB2.xlsm, Sub WB3.xlsm", _
MultiSelect:=True)
If IsArray(FName) Then
'Add a new workbook with one sheet
'Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
Set BaseWks = Worksheets.Add
BaseWks.Name = "Master"
rnum = 2
'Loop through all files in the array(myFiles)
For FNum = LBound(FName) To UBound(FName)
Set mybook = Nothing
On Error Resume Next
Set mybook = Workbooks.Open(FName(FNum))
On Error GoTo 0
If Not mybook Is Nothing Then
On Error Resume Next
With mybook.Worksheets("H-POD")
.Unprotect
LC = .Cells(.Rows.Count, "C").End(xlUp).Row
Set sourceRange = .Range("B10:M" & LC)
End With
If Err.Number > 0 Then
Err.Clear
Set sourceRange = Nothing
Else
'if SourceRange use all columns then skip this file
If sourceRange.Columns.Count >= BaseWks.Columns.Count Then
Set sourceRange = Nothing
End If
End If
On Error GoTo 0
If Not sourceRange Is Nothing Then
SourceRcount = sourceRange.Rows.Count
If rnum + SourceRcount >= BaseWks.Rows.Count Then
MsgBox "Sorry there are not enough rows in the sheet"
BaseWks.Columns.AutoFit
mybook.Close savechanges:=False
GoTo ExitTheSub
Else
'Copy the file name in column A
With sourceRange
BaseWks.Cells(rnum, "A"). _
Resize(.Rows.Count).Value = FName(FNum)
End With
'Set the destrange
Set destrange = BaseWks.Range("B" & rnum)
'we copy the values from the sourceRange to the destrange
With sourceRange
Set destrange = destrange. _
Resize(.Rows.Count, .Columns.Count)
End With
destrange.Value = sourceRange.Value
rnum = rnum + SourceRcount
End If
End If
mybook.Close savechanges:=False
End If
Next FNum
BaseWks.Columns.AutoFit
End If
ExitTheSub:
'Restore ScreenUpdating, Calculation and EnableEvents
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = CalcMode
End With
' ChDirNet SaveDriveDir
End Sub
感謝您的幫助!此代碼顯示列表框但不合並數據。 :( – Maaya
你的幫助請求是關於_「運行時錯誤:1004」_,並且這個解決方案解決了這個問題,然後你可能想把這個答案標記爲可接受的,而如果你遇到了合併代碼的問題,最小的「環境」 – user3598756
@Maaya;有什麼問題:我的解決方案不會回答你的_original_問題嗎? – user3598756