![](/img/trans.png)
[英]Create multiple sheets in excel using pandas to loop through sheet names
[英]Using a For Loop to run Macros on multiple sheets with ordered names like 1,2,3,4
我有一個創建宏,將數據從一個工作表中的數據從不同的工作簿 - >“數據”復制到當前工作簿 - >“測試”
Sub copy_data()
Windows("data.xlsx").Activate
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Windows("test.xlsm").Activate
Range("A1").Select
ActiveSheet.Paste
End Sub
我想為“數據”工作簿中的多個工作表運行此宏。
我認為循環應該是有效的,因為工作表名稱是1,2,3,4,5。 所以我在考慮制作一個for循環,但我真的陷入困境。
我到目前為止所做的工作如下所示:
Sub Loopsheets()
Dim wks As Worksheet
Dim i As Integer
Dim iStart As Integer
Dim iEnd As Integer
iStart = 1
iEnd = 5
If iStart > 0 And iEnd > 0 And iEnd > iStart Then
For i = iStart To iEnd
Set wks = ThisWorkbook.Worksheets(i)
Application.run "copy_data"
Next i
End If
End Sub
這是未經測試但應該有效:
Sub copy_data(ws As Worksheet)
Dim dwb As Workbook
Dim dws As Worksheet
Set dwb = Workbooks("data.xlsx")
Set dws = dwb.Worksheets(1)
With dws
.Range(.Cells(1, 1), .Cells(1, 1).End(xlDown).End(xlToRight)).copy ws.Range("A1")
End With
End Sub
Sub Loopsheets()
Dim wks As Worksheet
Dim i As Integer
Dim iStart As Integer
Dim iEnd As Integer
iStart = 1
iEnd = 5
If iStart > 0 And iEnd > 0 And iEnd > iStart Then
For i = iStart To iEnd
Set wks = ThisWorkbook.Worksheets(CStr(i))
copy_data wks
Next i
End If
End Sub
工作表的名稱是一個字符串,通過使用整數,它將調用第一個工作表而不是名為“1”的工作表。 因此將其更改為cstr(i)它會將1更改為“1”。
我簡單地將您的兩個例程組合在一起,並對您的工作簿/工作表進行了限定。 假設該工作thisworkbook
是test
。
Sub Loopsheets()
Dim wks As Worksheet
Dim ws As Workbook
Dim i As Integer
Dim iStart As Integer
Dim iEnd As Integer
iStart = 1
iEnd = 5
Set wb = Workbooks("data")
For i = iStart To iEnd
Set wks = wb.Worksheets(cstr(i)) 'edited per Scott
With wks
.Range("A1").Select
.Range(Selection, Selection.End(xlDown)).Select
.Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
End With
ThisWorkbook.Range("A1").Select
Selection.Paste
Next i
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.