2016-09-22 49 views

回答

0

我假设你的意思是Excel工作簿,在每几个工作表结合各自的所有工作表EXCEL导入一个Excel升序排列?如果是这种情况,请右键单击要复制到新目标的选项卡,单击“移动或复制...”并按照说明复制到新的图书。如果要将工作表保留在其原始位置以及制作副本,请务必选中“创建副本”框。

要清楚,您可以命名这个新的工作簿并将其他标签移动或复制到它。

+1

你可以记录我概述,如果你想要一个非VBA的解决方案中的步骤(我以为这,出于某种原因),成宏,和操作同各一次。不过,我不得不承认我更喜欢Pav.s的方式:) – Zephyr

0

这应该做你所需要的,它可以让你选择你的文件夹,然后遍历其中的所有文件,并将这些工作簿中的所有工作表合并到一个保存在同一目录中的工作表中。不排序虽然,但你可以find multiple ready macros做到这一点,所以只需运行一个结果或粘贴他们的内容之前我的wb2保存&关闭。

Sub MergeFilesWithoutSpaces() 
Dim fldr As FileDialog 
Dim path As String 

'pick folder 
Set fldr = Application.FileDialog(msoFileDialogFolderPicker) 
With fldr 
    .Title = "Select a Folder" 
    .AllowMultiSelect = False 
    .InitialFileName = strPath 
    If .Show <> -1 Then Exit Sub 
    path = .SelectedItems(1) 
End With 

'create new workbook to store results and rename its sheet 
With Application 
    .EnableEvents = False 
    .ScreenUpdating = False 
    .SheetsInNewWorkbook = 1 
End With 
Set wb2 = Workbooks.Add 
wb2.Worksheets(1).Name = "00Delete_Me" 

'fetch filename 
Filename = Dir(path & "\*.xls", vbNormal) 
'loop through all *XLS files 
If Len(Filename) = 0 Then Exit Sub 
Do Until Filename = vbNullString 
     Set Wkb = Workbooks.Open(Filename:=path & "\" & Filename) 
     'copy each worksheet 
     For Each Sh In Wkb.Sheets 
      Sh.Copy After:=wb2.Sheets(wb2.Sheets.Count) 
     Next Sh 

     Wkb.Close False 
    Filename = Dir() 
Loop 
'delete the initial sheet and save result as "combined" workbook in same directory 
Application.DisplayAlerts = False 
wb2.Sheets("00Delete_Me").Delete 
wb2.SaveAs Filename:=(path & "\combined"), FileFormat:=xlOpenXMLWorkbookMacroEnabled 
Application.DisplayAlerts = True 
'close combined 
wb2.Close 
End Sub