VBA从文件夹中的所有文件复制工作表并将其复制到主文件夹中
我有一个文件夹完整的多个Excel文件,所有的文件都有一个特定的表格,我需要复制到我的主人。
我需要macros来逐个打开该文件夹中的所有文件,并使用源文件名作为主工作簿中的工作表名称将特定工作表复制到主文件中。 Excel 2013。
我尝试在线search,并有以下代码:
Option Explicit Sub test() Dim wkbDest As Workbook Dim wksDest As Worksheet Dim wkbSource As Workbook Dim wksSource As Worksheet Dim MyPath As String Dim MyFile As String Application.ScreenUpdating = False Set wkbDest = ThisWorkbook Set wksDest = wkbDest.Worksheets("Sheet1") 'change the destination sheet name accordingly MyPath = "H:\Cutover\" If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\" MyFile = Dir(MyPath & "*.xls") Do While Len(MyFile) > 0 Set wkbSource = Workbooks.Open(MyPath & MyFile) Set wksSource = wkbSource.Worksheets("Sheet1") 'change the source sheet name accordingly 'Your copy/paste code here (((((need help here please)))))))) wkbSource.Close savechanges:=False MyFile = Dir Loop Application.ScreenUpdating = True MsgBox "Completed...", vbInformation End Sub
编辑:
所以我设法到了下面,但它仍然不能正常工作。 它不会将表格重命名为源文件名。 有人可以帮忙吗?
选项显式
小测()
Dim wkbDest As Workbook Dim wksDest As Worksheet Dim wkbSource As Workbook Dim wksSource As Worksheet Dim MyPath As String Dim MyFile As String Application.ScreenUpdating = False Set wkbDest = ThisWorkbook Set wksDest = wkbDest.Worksheets("Sheet1") 'change the destination sheet name accordingly MyPath = "H:\Cutover\" If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\" MyFile = Dir(MyPath & "*.xlsx") Do While Len(MyFile) > 0 Set wkbSource = Workbooks.Open(MyPath & MyFile) Set wksSource = wkbSource.Worksheets("Sheet1") 'change the source sheet name accordingly Sheets("SheetToCopy").Copy Before:=Workbooks("WorkbookToPasteIn").Sheets(SheetIndex) wkbSource.Close savechanges:=False MyFile = Dir Loop Application.ScreenUpdating = True MsgBox "Completed...", vbInformation
结束小组
所以您需要帮助的部分是如何将工作表中的一个范围复制/粘贴到一个文件中的目标文件中的常用工作表?
设置一个variables来跟踪目标工作表中最后一个空行
请查看如何确定每个源表单中最后一行的内容,select该源范围,将其复制到剪贴板中,然后将其粘贴到目标工作表的最后一个空行,并将目标variables重置为新的第一个空白在目标工作表中排
另一种方法是打开一个输出CSV文件,并parsing每一行,并build立一个string,并将其写入文件,而不closures输出CSV文件,直到循环结束
如果文件太大,使用VB.NET会更好,因为处理大文件的速度要快得多
您也可以将每个文件/行读取到内存数据表中,然后将数据表输出到CSV文件或目标Excel文件
你更喜欢哪种方法?
您可以简单地在新的工作簿中复制工作表,按照以下代码:
Sheets("SheetToCopy").Copy Before:=Workbooks("WorkbookToPasteIn").Sheets(SheetIndex)
然后,重新命名该表以适应您的手段。
- 如何分割string使用multicharstring作为分隔符在Excel(Excel)
- 从文件1复制整个列到2
- Macola YYYYMMDD int-到SQL和Exceldate。 这应该是一个简单的修复,这太令人沮丧了。
- 如何使用Excelmacros指定范围而不是UsedRange选项来清除单元格填充的颜色
- XMLHTTP.send请求带回“Nothing”
- 使用Excel VBA Autofilter时如何删除空白行
- Excel VSTO加载项:无法在MessageBox.Show(“Test”)后重新激活Excel;
- 当用户更改删除公式时更改背景
- VBA EXCEL:如何调用另一个子例程中的子例程?