簡體   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