2012-07-03 84 views
0

我有一个写入一行的宏。我想在突出显示的所有行上运行此宏。运行宏多行

有没有办法在所选行之间循环并为每个行运行宏。

由于公司政策,我无法显示整个宏,但它基本上取得了Excel中的一行中的值,并将其填充到单词模板中。下面是宏的开始:

Sub OpenForm() 
With Selection 
    Dim pappWord As Object 
    Dim docWord As Object 
    Dim wb As Excel.Workbook 
    Dim TodayDate As String 
    Dim Path As String 

    Set wb = ActiveWorkbook 
    TodayDate = Format(Date, "mmmm d, yyyy") 
    Path = wb.Path & "\MAF Template.dot" 

    On Error GoTo ErrorHandler 

    'Create a new Word Session 
    Set pappWord = CreateObject("Word.Application") 

    On Error GoTo ErrorHandler 

    'Open document in word 
    Set docWord = pappWord.Documents.Add(Path) 
    'Blank for Qty 
    docWord.FormFields("Text38").Result = Range(ActiveCell.EntireRow.Address)(1, 2) 'Part of System (System ID) 

....它填充的字段,并结束于:

With pappWord 
     .Visible = True 
     .ActiveWindow.WindowState = 0 
     .Activate 
    End With 


    'Release the Word object to save memory and exit macro 
ErrorExit: 
    Set pappWord = Nothing 
    Exit Sub 

    'Error Handling routine 
ErrorHandler: 
    If Err Then 
     MsgBox "Error No: " & Err.Number & "; There is a problem" 
     If Not pappWord Is Nothing Then 
      pappWord.Quit False 
     End If 
     Resume ErrorExit 
    End If 
End With 
End Sub 

所以它适用于一个Excel行,而不是运行此的每一行,我想选择一些行并通过它们运行宏。

感谢,

+2

是 - 究竟如何,将取决于您的宏,所以如果你更新你的现有代码的问题,我敢肯定,你会得到建议。 –

回答

0

问:有没有一种方法对所选行并运行为每一个宏之间的循环?答:是的。例如,Google针对“VBAScript单元格范围”。例如:

“希望帮助...至少有一点。

您必须发布一些代码并解释更多关于您的应用程序,然后才能进一步帮助您。

0

试试这个:

Dim a As Range, b As Range 

Set a = Selection 

For Each b In a.Rows 

    b.Value = "xpto" 
    //your code will here...but only seeing your code to be more precise 

Next 
+0

谢谢,我更新了我的帖子。这种工作,但它使用了第一行的数据,并重复了x次。 – mgalal

+0

如果它将其标记为正确答案 –

+0

虽然它没有正常工作,但它运行宏的正确次数(突出显示的行数),但它仅使用来自第一行的数据,并且不会抓取来自其他人的数据。 – mgalal