2013-12-10 27 views
0

我是word vba中的新手,需要用句号改变一些逗号,并且在表格中以指定的条件做相同的事情。有人能帮忙吗?任何提示或可靠的信息来源都会很好。Word vba - 将“”改为“”。“和“每个”。在任何指定的表格(例如,每个表格有8列)中都有“,”

这只是示例代码。我需要限制查找/替换方法。例如只有8列的表。

Sub FormatMyTables() 
    Dim oTb As Table 
    For Each oTb In ActiveDocument.Tables 
     oTb.Select 
     With Selection.Find 
      .ClearFormatting 
      .Text = "." 
      .Replacement.ClearFormatting 
      .Replacement.Text = "," 
      .Execute Replace:=wdReplaceAll, Forward:=True, _ 
      Wrap:=wdFindContinue 
     End With 
    Next oTb 
End Sub 
+0

你不需要任何VBA。只需选择表格并运行MS-Word中的标准操作“Find >> Replace”即可。 –

+0

该文件相当大。我只需要在指定的表格中应用更改。每次手动执行此操作都需要很多小时。 – Ascorpio

+0

如果是这样,那么以这种方式进行:选择您想要替换的表格>>开始录制宏>>使用查找替换操作来执行所需操作>>停止录制。 **因此,您将得到您需要的宏。**接下来,选择其他表并运行您的宏。如果你有'指定表',它总是需要部分手动完成。 –

回答

0

您需要更改Wrap parameter以保持仅在选定区域进行更换。我还加入了if statement来检查更换是否只在8列的表格中出现(根据你的问题)。请参阅下面的代码中的一些评论。

Sub FormatMyTables() 
Dim oTb As Table 

For Each oTb In ActiveDocument.Tables 

    'check if table has 8 columns: 
    If oTb.Columns.Count = 8 Then 

    oTb.Select 
    With Selection.Find 
     .ClearFormatting 
     .Text = "." 
     .Replacement.ClearFormatting 
     .Replacement.Text = "," 

     'here I changed the wrap parameter: 
     .Execute Replace:=wdReplaceAll, Forward:=True, _ 
       Wrap:=WdFindWrap.wdFindStop 
    End With 
    End If 

Next oTb 
End Sub 
+0

谢谢你,这非常有帮助。 _wrap_是我在找的东西:] – Ascorpio

相关问题