设置Excel VBA以打开40个单独的文件夹和40个单独的Excel工作表
Excel VBA:设置VBA代码以打开40个单独的文件夹和40个单独的Excel工作表,并将特定的相同单元格从工作表复制并粘贴到一个大表中 此方法将在excel 2003中使用:设置Excel VBA以打开40个单独的文件夹和40个单独的Excel工作表,excel,vba,Excel,Vba,Excel VBA:设置VBA代码以打开40个单独的文件夹和40个单独的Excel工作表,并将特定的相同单元格从工作表复制并粘贴到一个大表中 此方法将在excel 2003中使用: Sub CopyFiles() Dim lCount As Long Dim wbResults As Workbook Dim wbCodeBook As Workbook Application.ScreenUpdating = False Application.Dis
Sub CopyFiles()
Dim lCount As Long
Dim wbResults As Workbook
Dim wbCodeBook As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
On Error Resume Next
Set wbCodeBook = ThisWorkbook
Dim cntr As Integer
cntr = 1
With Application.FileSearch
.NewSearch
'Change path to suit
.LookIn = "C:\MyDocuments\TestResults"
.FileType = msoFileTypeExcelWorkbooks
'.Filename = "Book*.xls"
If .Execute > 0 Then 'Workbooks in folder
For lCount = 1 To .FoundFiles.Count 'Loop through all.
'Open Workbook x and Set a Workbook variable to it
Set wbResults = Workbooks.Open(Filename:=.FoundFiles(lCount), UpdateLinks:=0)
'Copy R4C9 from each workbook into range
wbCodeBook.Worksheets(1).Range("A" & cntr).Value = wbResults.Worksheets(1).Cells(4, 9).Value
cntr = cntr + 1
wbResults.Close SaveChanges:=False
Next lCount
End If
End With
On Error GoTo 0
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub
Excel 2007及更新版本请尝试以下方法。这将打开一个文件对话框,允许您选择一个文件夹,其中包含要循环使用的所有excel文件。请注意,文件扩展名为.xls,但如果需要可以更改
Sub CopyFiles()
Dim lCount As Long
Dim wbResults As Workbook
Dim wbCodeBook As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
On Error Resume Next
Set wbCodeBook = ThisWorkbook
Dim cntr As Integer
cntr = 1
Dim sPath As String
Dim sFil As String
Dim FolderPath As String
Dim diaFolder As FileDialog
Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)
diaFolder.AllowMultiSelect = False
diaFolder.Show
FolderPath = diaFolder.SelectedItems(1)
sPath = FolderPath & "\" 'location of files
sFil = Dir(sPath & "*.xls") 'change or add formats
Do While sFil <> ""
Set wbResults = Workbooks.Open(sPath & "\" & sFil) 'opens the file
wbCodeBook.Worksheets(1).Range("A" & cntr).Value = wbResults.Worksheets(1).Cells(4, 9).Value
cntr = cntr + 1
wbResults.Close True
sFil = Dir
Loop
On Error GoTo 0
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub
子复制文件()
暗淡如长
将结果设置为工作簿
将wbCodeBook设置为工作簿
Application.ScreenUpdating=False
Application.DisplayAlerts=False
Application.EnableEvents=False
出错时继续下一步
设置wbCodeBook=ThisWorkbook
作为整数的Dim cntr
cntr=1
像细绳一样暗淡
将sFil设置为字符串
将FolderPath设置为字符串
“将文件夹设置为文件”对话框
Set diaFolder=Application.FileDialog(msoFileDialogFolderPicker)
diaFolder.AllowMultiSelect=False
diaFolder.Show
FolderPath=diaFolder.SelectedItems(1)
sPath=文件夹路径和文件的“\”位置
sFil=Dir(sPath&“*.xls”)'更改或添加格式
当sFil“”时执行
Set wbResults=Workbooks.Open(sPath&“\”&sFil)”打开文件
wbCodeBook.Worksheets(1).Range(“A”和cntr).Value=wbResults.Worksheets(1).单元格(4,9).Value
cntr=cntr+1
wbResults.Close True
sFil=Dir
环
错误转到0
Application.ScreenUpdating=True
Application.DisplayAlerts=True
Application.EnableEvents=True
端接头
我建议你先试试,然后把你的代码和你遇到的任何具体问题一起发布。这可能会有帮助。范围(“B2:B12”)。选择ActiveCell.FormulaR1C1=R4C9我正试图从每个文件夹的每个工作簿中选择单元格R429。请问我该如何具体说明?非常感谢你的帮助!!我更新了代码,使其具有excel 2007及更新版本的当前版本。我测试了那个版本,但不是旧的2003Hi Portland感谢所有这一切,如果我将.xls改为.xlsm,那是否可以工作,因为电子表格都是宏格式的?是的,我只是用.xlsm测试了它,没有问题。如果您对此感到满意,请标记为已回答,这样问题就可以结束了。谢谢