繁体   English   中英

在 Word 中使用宏/VBA 来满足我的格式需求的可行性? (日期、货币、样式)

[英]Feasibility of using macros/VBA for my formatting needs in Word? (Dates, currencies, styles)

我已经成功地找到了满足我当前某些需求的现有代码,但我想知道是否/如何使用 VBA 在 Microsoft Word 中执行以下操作,因为我目前在格式化上花费了大量时间。 我不确定其中一些是否在 VBA 下是可能的,所以在我花费比我已经研究的时间更多的时间之前,我真的很感激他们的可行性。 非常感谢!

  1. 将日期更改为我想要的格式。 例如24/9/2019、2019年9月24日、2019年9月24日、星期二(9月24日)——> 19年9月24日

  2. 更改货币。 例如20亿英镑到20亿英镑,1790亿欧元到1790亿欧元,7000万美元到7000万美元

  3. 将“上周”、“本周”、“下周”更改为“d mmm yy 结束的一周”。 例如上周——> 19 年 9 月 1 日结束的一周

我知道上面的所有编辑,如果使用宏进行,将容易出现很多错误。 我的计划是在使用宏之前跟踪更改,以便我仍然可以接受或拒绝每个更改。 我也不确定改变周的可行性 - 我可以实时使用日期吗?

  1. 格式化我的段落以快速适应一种风格假设我的工作采用以下结构:

款式一

款式2

  • 车身(款式 3)

  • 车身(款式 3)

  • 车身(款式 3)

款式一

款式2

  • 车身(款式 3)

  • 车身(款式 3)

  • 车身(款式 3)

等等等等。 样式 1 中的段落一开始都已正确格式化,但我现在要做的是格式化样式 2 和样式 3。 宏能否以某种方式检测到我的样式 2 段落始终低于样式 1 段落,并为我设置格式? 同样,我的样式 3 段落始终低于样式 2/另一个样式 3 段落。

太多的问题...无论如何。 关于日期。 它不是一个简单的宏,因为您要更改很多格式。 从 dd/mm/yyyy 更改为 dd mm yyyy 的代码:

Sub DateRepl()
    Dim Test As Boolean

    Selection.HomeKey Unit:=wdStory, Extend:=wdMove
    Test = True
    Do While Test
        With Selection.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Text = "([0-9]{1,2})[/]([0-9]{1,2})[/]([0-9]{4})"
            .Format = True
            .Forward = True
            .MatchWildcards = True
        End With

        Selection.Find.Execute Replace:=wdReplaceNone

        If IsDate(Selection.Text) Then
            Selection.Text = Format(Selection.Text, "dd mm yyyy")
            Selection.Collapse wdCollapseEnd
        Else
            Test = False
        End If
    Loop
End Sub

关于货币项目,这将是非常困难的,因为您有很多机会(百万、十亿……)。

关于周替换:

Dim Today, Workday
Today = Now
Workday = Weekday(Today)

With Selection.Find 
 .ClearFormatting 
 .Text = "last week" 
 .Replacement.ClearFormatting 
 .Replacement.Text = "the week ending " & DateAdd("d", -Workday, Now)
 .Execute Replace:=wdReplaceAll, Forward:=True, _ 
 Wrap:=wdFindContinue 
End With

With Selection.Find 
 .ClearFormatting 
 .Text = "this week" 
 .Replacement.ClearFormatting 
 .Replacement.Text = "the week ending " & DateAdd("d", 7-Workday, Now)
 .Execute Replace:=wdReplaceAll, Forward:=True, _ 
 Wrap:=wdFindContinue 
End With

With Selection.Find 
 .ClearFormatting 
 .Text = "next week" 
 .Replacement.ClearFormatting 
 .Replacement.Text = "the week ending " & DateAdd("d", 14-Workday, Now)
 .Execute Replace:=wdReplaceAll, Forward:=True, _ 
 Wrap:=wdFindContinue 
End With

关于格式,我不知道。

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM