2016-06-17 48 views
0

我有多個工作簿,其中包含多個工作表。每個工作簿都是針對每個人的。因此,我想將所有工作表合併到一個新工作簿中,並分別爲每個人保存工作簿。我無法弄清楚如何在新的工作簿和現有的工作簿之間切換。我不想通過文件名來引用現有文件,即包含多個工作表的文件,因爲每個人的文件名都不相同。如何在使用兩個工作簿時引用工作簿,而其中一個工作簿沒有特定的硬編碼文件名

Sub MergeSheets() 
Dim i As Integer 
Dim Newbook As Workbook 
Dim ws As Worksheet 
Dim PersonName As String 

PersonName = ActiveWorkbook.Sheets("Person Profile").Range("D3") 
Set Newbook = Workbooks.Add 
Set ws = Newbook.Worksheets("Sheet1").Name = "Merged" 


ActiveWorkbook.Sheets("Person Profile").Activate 
ActiveSheet.UsedRange.Select 
Selection.Copy Destination:=Newbook.Range("A1") 


For i = 2 To Sheets.Count 
Sheets(i).Activate 
UsedRange.Select 
Selection.CurrentRegion.Select 
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select 
Selection.Copy Destination:=ws.Range("A65536").End(xlUp).Row 
Next 

Newbook.SaveAs "C:\Users\Documents\" + PersonName + ".xls" 


End Sub 
+0

打開通過其路徑的書並將其設置爲一個變量,然後用互動所述可變。 – findwindow

+0

你的「單人」工作簿列表在哪裏循環?也許你會發布你的開始和結束場景的例子。 – user3598756

+0

@ user3598756該宏無意循環遍歷所有工作簿。這個想法是打開一個需要處理的工作簿並運行宏,它將創建一個單獨的工作簿並將其保存在代碼中提供的路徑中。該文件的名稱將從正在處理的工作簿中的一個工作表中的一個單元標識引用。我希望這是有道理的。謝謝 – Zar

回答

0

您可以使用名稱workook

Sub test() 
    Dim workBook1 As Workbook 
    Dim workBook2 As Workbook 
    Dim workBook3 As Workbook 
    Set workBook1 = Workbooks("Book1") 'If opened 
    Set workBook2 = Workbooks("Book3") 'If opened 
    'if not opened 
    Workbooks.Open Filename:="C:\Users\Rui\Documents\Benfica.xlsx" 
    set workBook3 = Workbooks("Benfica.xlsx") 
End Sub 
+0

這需要硬編碼每本書。 – findwindow

+0

我將代碼更改爲未打開文件的情況 – ruirodrigues1971

相關問題