在word 2007中用宏替换日期/用上标替换数字部分

时间:2012-08-25 10:21:22

标签: vba replace ms-word superscript

我需要帮助来更改某些doc文件中的日期格式。我有数百个页面,我用罗马尼亚语替换不同的日期,实际上我需要在日期之前只更换斜杠,有更简单的方法吗?替换所有日期的宏

类似的东西:

"nr. 313/17 noiembrie 2011" i have to replace it with "nr. 313 din 17 noiembrie 2011"

"15/3 aprilie 2012" -> "15 din 3 aprilie 2012"

"27/03 aprilie 2012" -> "27 din 03 aprilie 2012"

我必须用“din”(前后空格)替换数字之间的斜杠“/”

II。我也必须小心使用替换因为我在文本中有其他格式,例如“art.385 / 15”,其中斜杠不应该替换为“din”一词

这是另一个我没有找到答案的问题:

                
"art. 15/2" - "art. 152"

"art. 27/12" - "art. 2712"

"art. 385/19" - "art. 38519" 
  • “/ 2”,“/ 12”,“/ 19”必须只用上标替换,斜线必须删除,我在文本中有很多文章,我必须替换...和宏可以帮助我更快更好地工作

有没有办法解决这两个问题? (我使用2007年和2010年的文字)

1 个答案:

答案 0 :(得分:1)

OP要求将“15/3 aprilie”形式的日期字符串更改为“15 din 3 aprilie”,而不会影响[number / number]的其他情况。这可以通过通配符搜索和替换操作来完成,该操作在12个月中的每个月运行12次。

核心例程包含单个搜索和替换操作,如下所示:

     Sub replacemonth(month As String)

            With ActiveDocument.Range.Find
                .ClearFormatting
                .Text = "([0-9]{1,3})/([0-9]{1,3} " + month + ")"
                .Replacement.ClearFormatting
                .Replacement.Text = "\1 din \2"
                .Forward = True
                .Wrap = wdFindStop
                .Format = False
                .MatchCase = False
                .MatchWholeWord = False
                .MatchWildcards = True
                .Execute Replace:=wdReplaceAll
            End With

    End Sub

然后第二个例程运行每个月的例程:

 Sub ReplaceDates()
       replacemonth ("ianuarie")
       replacemonth ("februarie")
       replacemonth ("martie")
       replacemonth ("aprilie")
       replacemonth ("mai")
       replacemonth ("iunie")
       replacemonth ("iulie")
       replacemonth ("august")
       replacemonth ("septembrie")
       replacemonth ("octombrie")
       replacemonth ("noiembrie")
       replacemonth ("decembrie")
End Sub

将这两者放入宏编辑器中,运行第二个宏(ReplaceDates),它应该替换你指定的所有日期。

搜索例程假设斜杠两侧的数字最长可达三位数(如原始帖子中的第一个示例);可以根据需要在搜索字符串中轻松更改该数字。