Excel 从多个工作簿复制特定数据
我是VBA新手,我一直在尝试创建一个程序来复制特定范围的数据,从多个工作手册的第2页到主工作簿的第2页 复制条件:列范围将为A20到AS20,而行范围将取决于在列R中具有数据的最后一个单元格。 粘贴条件:从第A20行开始,连续粘贴所有复制的单元格,中间有一个空行 复制粘贴条件:从源书到母版页的范围D5:D18,重叠,因为所有源书的范围都相同。 我一直到下一阶段才来,但没有进一步的想法。做了一些修改,但效果不好 进展:Excel 从多个工作簿复制特定数据,excel,vba,consolidation,Excel,Vba,Consolidation,我是VBA新手,我一直在尝试创建一个程序来复制特定范围的数据,从多个工作手册的第2页到主工作簿的第2页 复制条件:列范围将为A20到AS20,而行范围将取决于在列R中具有数据的最后一个单元格。 粘贴条件:从第A20行开始,连续粘贴所有复制的单元格,中间有一个空行 复制粘贴条件:从源书到母版页的范围D5:D18,重叠,因为所有源书的范围都相同。 我一直到下一阶段才来,但没有进一步的想法。做了一些修改,但效果不好 进展: 看看这个。请参阅代码中的注释,如果有问题,请输入注释以回答。希望你能找到新的东
看看这个。请参阅代码中的注释,如果有问题,请输入注释以回答。希望你能找到新的东西。您必须将此代码放入主工作簿中的模块中
Sub copyDataFromMultipleWorkbooksIntoMaster()
Dim FileItem As Object
Dim oFolder As Object
Dim FSO As Object
Dim BrowseFolder As String
Dim masterBook As Workbook
Dim sourceBook As Workbook
Dim insertRow As Long
Dim copyRow As Long
' add variables for blank check
Dim checkRange As Range, r As Range
insertRow = 20
Set masterBook = ThisWorkbook
Set FSO = CreateObject("Scripting.FileSystemObject")
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Select the folder with source files"
If Not .Show = 0 Then
BrowseFolder = .SelectedItems(1)
Else
Exit Sub
End If
End With
Application.ScreenUpdating = False
Set oFolder = FSO.getfolder(BrowseFolder)
masterBook.Sheets("Service Order Template").Cells.UnMerge
For Each FileItem In oFolder.Files
If FileItem.Name Like "*.xls*" Then
Workbooks.Open (BrowseFolder & Application.PathSeparator & FileItem.Name)
Set sourceBook = Workbooks(FileItem.Name)
With sourceBook.Sheets("Service Order Template")
.Cells.UnMerge
copyRow = .Cells(Rows.Count, 18).End(xlUp).Row
Range(.Cells(20, 1), .Cells(copyRow, 45)).Copy Destination:=masterBook.Sheets("Service Order Template").Cells(insertRow, 1)
' copy additional needed range D5 : D18 from source to range D5 on master
Range(.Cells(5, 4), .Cells(18, 4)).Copy Destination:=masterBook.Sheets("Service Order Template").Cells(5, 4)
Application.CutCopyMode = False
.Parent.Close SaveChanges:=False
End With
masterBook.Sheets("Service Order Template").insertRow = .Cells(Rows.Count, 18).End(xlUp).Row + 2
End If
Next
With masterBook.Sheets("Service Order Template")
' if you don't need to highlight the whole row - remove the ".EntireRow" part →---→---→----↓
Range(.Cells(20, 18), .Cells(Rows.Count, 18).End(xlUp)).SpecialCells(xlCellTypeBlanks).EntireRow.Interior.Color = vbYellow
End With
Application.ScreenUpdating = True
End Sub
看看这个。请参阅代码中的注释,如果有问题,请输入注释以回答。希望你能找到新的东西。您必须将此代码放入主工作簿中的模块中
Sub copyDataFromMultipleWorkbooksIntoMaster()
Dim FileItem As Object
Dim oFolder As Object
Dim FSO As Object
Dim BrowseFolder As String
Dim masterBook As Workbook
Dim sourceBook As Workbook
Dim insertRow As Long
Dim copyRow As Long
' add variables for blank check
Dim checkRange As Range, r As Range
insertRow = 20
Set masterBook = ThisWorkbook
Set FSO = CreateObject("Scripting.FileSystemObject")
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Select the folder with source files"
If Not .Show = 0 Then
BrowseFolder = .SelectedItems(1)
Else
Exit Sub
End If
End With
Application.ScreenUpdating = False
Set oFolder = FSO.getfolder(BrowseFolder)
masterBook.Sheets("Service Order Template").Cells.UnMerge
For Each FileItem In oFolder.Files
If FileItem.Name Like "*.xls*" Then
Workbooks.Open (BrowseFolder & Application.PathSeparator & FileItem.Name)
Set sourceBook = Workbooks(FileItem.Name)
With sourceBook.Sheets("Service Order Template")
.Cells.UnMerge
copyRow = .Cells(Rows.Count, 18).End(xlUp).Row
Range(.Cells(20, 1), .Cells(copyRow, 45)).Copy Destination:=masterBook.Sheets("Service Order Template").Cells(insertRow, 1)
' copy additional needed range D5 : D18 from source to range D5 on master
Range(.Cells(5, 4), .Cells(18, 4)).Copy Destination:=masterBook.Sheets("Service Order Template").Cells(5, 4)
Application.CutCopyMode = False
.Parent.Close SaveChanges:=False
End With
masterBook.Sheets("Service Order Template").insertRow = .Cells(Rows.Count, 18).End(xlUp).Row + 2
End If
Next
With masterBook.Sheets("Service Order Template")
' if you don't need to highlight the whole row - remove the ".EntireRow" part →---→---→----↓
Range(.Cells(20, 18), .Cells(Rows.Count, 18).End(xlUp)).SpecialCells(xlCellTypeBlanks).EntireRow.Interior.Color = vbYellow
End With
Application.ScreenUpdating = True
End Sub
----Set sourceBook=Workbooks.Open(FileItem.Name)'开源书----抛出错误。这里到底应该做些什么?上面说文件被移动、重命名或删除了。我编辑了代码,错过了,抱歉。应该有
Set sourceBook=Workbooks.Open(BrowseFolder&Application.PathSeparator&FileItem.Name)
要指定文件的完整路径,请重试。请注意,我已经测试了代码,它工作正常。查看线程以了解可能的原因,因为代码是正确的。我收到一个错误,“我们无法对合并的单元格执行此操作”。。。这是我以前遇到的错误之一…我已经解决了。。。你能帮我解释一下我的最新评论吗…----Set sourceBook=Workbooks.Open(FileItem.Name)'opensourcebook----抛出错误。这里到底应该做些什么?上面说文件被移动、重命名或删除了。我编辑了代码,错过了,抱歉。应该有Set sourceBook=Workbooks.Open(BrowseFolder&Application.PathSeparator&FileItem.Name)
要指定文件的完整路径,请重试。请注意,我已经测试了代码,它工作正常。查看线程以了解可能的原因,因为代码是正确的。我收到一个错误,“我们无法对合并的单元格执行此操作”。。。这是我以前遇到的错误之一…我已经解决了。。。你能帮我说说我最近的评论吗。。。