2014-11-08 82 views
0

我必须准备一个短的宏。 我在一个工作簿中的多个工作表,我写了一个宏来导入一个范围从一个不同的工作簿,但我希望我的宏循环所有工作表。 我读了很多关于它的内容,但我仍然认为我错过了的一些基本知识。 有人可以帮我把这个宏放在循环中吗?在所有工作表上运行我的宏

Sub AddHeader() 
    current = ActiveWorkbook.Name 
    Range("A1:C96").Select 
    Selection.Cut Destination:=Range("A55:C150") 
    Windows("MIP_Ordering_Header.xlsx").Activate 
    Range("A1:H54").Select 
    Selection.Copy 
    Windows(current).Activate 
    Range("A1").Select 
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ 
    SkipBlanks:=False, Transpose:=False 
    ActiveSheet.Paste 
    Cells(53, 1).Value2 = "Plate Name:" & ActiveSheet.Name 
End Sub 
+0

此链接介绍如何循环遍历工作簿中的所有工作表:http://support.microsoft.com/kb/142126 – Kevin 2014-11-08 12:44:57

+0

谢谢我尝试过,但它似乎不足以将此代码嵌入到此循环中。我必须更改变量吗? – Benedikt 2014-11-08 13:08:15

+0

我希望下面的帮助 – Kevin 2014-11-08 14:04:41

回答

-1

我会做类似于下面的事情。通过在活动工作簿中的表圈第一个复制的范围,然后:

子的AddHeader()

Dim WS_Count As Integer 
Dim I As Integer 

'first get the data to copy 
Windows("MIP_Ordering_Header.xlsx").Activate 
Range("A1:H54").Select 
Selection.Copy 
ActiveWorkbook.Close 

'get all the active sheets 
WS_Count = ActiveWorkbook.Worksheets.Count 

' Begin the loop. 
For I = 1 To WS_Count 
    'refer to the curent workbook using the "I" variable 
    ActiveWorkbook.Worksheets(I).Range("A1").Select 
    'the rest of your code... 
Next End Sub 

编辑:如何复制粘贴有变量:

Sub CopyPaste() 

Dim src1 As Variant 
Dim src2 As Variant 

src1 = Sheets(1).Range("A1:A2").Value 
src2 = Sheets(1).Range("A4:A5").Value 

Sheets(1).Range("B1:B2").Value = src1 
Sheets(1).Range("B4:B5").Value = src2 End Sub 
+0

谢谢,它的工作原理,但只有当我也把“复制”部分放入循环。否则,选择会被覆盖。我可以一次有两个“选择”吗? – Benedikt 2014-11-08 17:51:40

+0

一次不能有两个选择,但请参阅我的编辑以了解如何将范围分配给变体。这个例子基本上是一个复制粘贴。 – Kevin 2014-11-08 20:10:47

+0

谢谢,完美! – Benedikt 2014-11-09 13:43:10

相关问题