求助大家word

涅朵奇卡

来自: 涅朵奇卡(别看得太重,这样就能飞得起来) 2018-04-03 08:38:02

×
加入小组后即可参加投票
  • Simon

    Simon (人要有正确的信仰) 2018-04-03 11:30:21

    用VBA宏编程。查找1993-01-01,处理,替换。
    我以前做这个时的思路就是这样的。

  • Simon

    Simon (人要有正确的信仰) 2018-04-03 11:33:33

    比如中间的是月份,01替换为Jan.,02就替换为Feb.,以此类推,做12个if判断。
    年份和日期直接重新安排位置就行了。

  • 涅朵奇卡

    涅朵奇卡 (别看得太重,这样就能飞得起来) 2018-04-03 12:52:20

    比如中间的是月份,01替换为Jan.,02就替换为Feb.,以此类推,做12个if判断。 年份和日期直接重 比如中间的是月份,01替换为Jan.,02就替换为Feb.,以此类推,做12个if判断。 年份和日期直接重新安排位置就行了。 ... Simon

    这个具体怎么弄呢😂好复杂啊

    来自 豆瓣App
  • 涅朵奇卡

    涅朵奇卡 (别看得太重,这样就能飞得起来) 2018-04-03 12:52:43

    比如中间的是月份,01替换为Jan.,02就替换为Feb.,以此类推,做12个if判断。 年份和日期直接重 比如中间的是月份,01替换为Jan.,02就替换为Feb.,以此类推,做12个if判断。 年份和日期直接重新安排位置就行了。 ... Simon

    批量得了吗?

    来自 豆瓣App
  • Simon

    Simon (人要有正确的信仰) 2018-04-03 15:01:47

    就是把你需要转的含有大量那种格式日期的文章弄到Word里,可能包含几百页。
    然后运行一下新编写的VBA宏,估计一分钟内就全部自动搞定了。
    比如下面是一个缩进宏(这个当然不是你要的那种宏~~):

    Sub Indent()
    '
    ' Macro21 Macro
    '
    With Selection.ParagraphFormat
    ' .SpaceBeforeAuto = False
    ' .SpaceAfterAuto = False
    .FirstLineIndent = .FirstLineIndent + 18
    ' .FirstLineIndent = CentimetersToPoints(0.73)
    ' MsgBox (.FirstLineIndent)
    End With
    End Sub

    就这类。除此而外,估计没有什么其它好方法。

  • 涅朵奇卡

    涅朵奇卡 (别看得太重,这样就能飞得起来) 2018-04-03 19:53:20

    就是把你需要转的含有大量那种格式日期的文章弄到Word里,可能包含几百页。 然后运行一下新编写 就是把你需要转的含有大量那种格式日期的文章弄到Word里,可能包含几百页。 然后运行一下新编写的VBA宏,估计一分钟内就全部自动搞定了。 比如下面是一个缩进宏(这个当然不是你要的那种宏~~): Sub Indent() ' ' Macro21 Macro ' With Selection.ParagraphFormat ' .SpaceBeforeAuto = False ' .SpaceAfterAuto = False .FirstLineIndent = .FirstLineIndent + 18 ' .FirstLineIndent = CentimetersToPoints(0.73) ' MsgBox (.FirstLineIndent) End With End Sub 就这类。除此而外,估计没有什么其它好方法。 ... Simon

    好难 可以把你之前的宏发给我吗?

    来自 豆瓣App
  • [已注销]

    [已注销] 2018-04-04 05:09:41

    Sub GetDateAndReplace()
    Dim FoundOne As Boolean

    Selection.HomeKey Unit:=wdStory, Extend:=wdMove
    FoundOne = True ' loop at least once

    Do While FoundOne ' loop until no date is found
    With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "([0-9]{4})[-]([0-9]{1,2})[-]([0-9]{1,2})"
    .Format = True
    .Forward = True
    .MatchWildcards = True
    End With

    Selection.Find.Execute Replace:=wdReplaceNone

    ' check the find to be sure it's a date
    If IsDate(Selection.Text) Then
    Selection.Text = Format(Selection.Text, "mmmm d, yyyy")
    Selection.Collapse wdCollapseEnd
    Else ' not a date - end loop
    FoundOne = False
    End If
    Loop
    End Sub

    网上找的macro, 搜索text改了一下format, 试了可用。重要文件最后还是重复核实的吧,
    免责!

  • [已注销]

    [已注销] 2018-04-04 05:27:42

    看到这个想到小时候看的一个短篇小说, 好象是说2战期间,一个美国大兵(?)在欧洲偶遇一个当地美女, 仓促之间,女的在纸巾上写了日期预订在那个酒馆见面,大兵准时去了, 但是美女没来。。。很多年后大兵发现, 那国的日期写法月和日的顺序和美国的习惯写法正好相反。。。。

  • Simon

    Simon (人要有正确的信仰) 2018-04-04 09:49:37

    Sub GetDateAndReplace() Dim FoundOne As Boolean Selection.HomeKey Unit:=wdStory, Sub GetDateAndReplace() Dim FoundOne As Boolean Selection.HomeKey Unit:=wdStory, Extend:=wdMove FoundOne = True ' loop at least once Do While FoundOne ' loop until no date is found With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = "([0-9]{4})[-]([0-9]{1,2})[-]([0-9]{1,2})" .Format = True .Forward = True .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceNone ' check the find to be sure it's a date If IsDate(Selection.Text) Then Selection.Text = Format(Selection.Text, "mmmm d, yyyy") Selection.Collapse wdCollapseEnd Else ' not a date - end loop FoundOne = False End If Loop End Sub 网上找的macro, 搜索text改了一下format, 试了可用。重要文件最后还是重复核实的吧, 免责! ... [已注销]

    哇,Cuckoo's Nest你好厉害,迅速解决了楼主的需求。

  • [已注销]

    [已注销] 2018-04-05 00:43:32

    不算厉害, 很容易就找到了, 因为有时候要帮助别人编辑一些数据, 对这个比较感兴趣而已。

  • 涅朵奇卡

    涅朵奇卡 (别看得太重,这样就能飞得起来) 2018-04-08 13:38:26

    Sub GetDateAndReplace() Dim FoundOne As Boolean Selection.HomeKey Unit:=wdStory, Sub GetDateAndReplace() Dim FoundOne As Boolean Selection.HomeKey Unit:=wdStory, Extend:=wdMove FoundOne = True ' loop at least once Do While FoundOne ' loop until no date is found With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = "([0-9]{4})[-]([0-9]{1,2})[-]([0-9]{1,2})" .Format = True .Forward = True .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceNone ' check the find to be sure it's a date If IsDate(Selection.Text) Then Selection.Text = Format(Selection.Text, "mmmm d, yyyy") Selection.Collapse wdCollapseEnd Else ' not a date - end loop FoundOne = False End If Loop End Sub 网上找的macro, 搜索text改了一下format, 试了可用。重要文件最后还是重复核实的吧, 免责! ... [已注销]

    你好哦 其实这个格式还是不对呢 我要的是 Jan.01, 1991 (月份缩写“Jan”+缩写符“.” 然后日期两位数 然后是“,” 然后再是年份四位数)谢谢!

    来自 豆瓣App
  • Simon

    Simon (人要有正确的信仰) 2018-04-08 15:26:46

    我把Cuckoo's Nest的程序替你修改了,下面这个可以:

    Sub GetDateAndReplace()
    Dim FoundOne As Boolean

    Selection.HomeKey Unit:=wdStory, Extend:=wdMove
    FoundOne = True ' loop at least once

    Do While FoundOne ' loop until no date is found
    With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "([0-9]{4})[-]([0-9]{1,2})[-]([0-9]{1,2})"
    .Format = True
    .Forward = True
    .MatchWildcards = True
    End With

    Selection.Find.Execute Replace:=wdReplaceNone

    ' check the find to be sure it's a date
    If IsDate(Selection.Text) Then

    If Format(Selection.Text, "mmm") <> "May" Then


    Selection.Text = Format(Selection.Text, "mmm.dd,yyyy")

    Else

    Selection.Text = Format(Selection.Text, "mmm dd,yyyy")

    End If

    Selection.Collapse wdCollapseEnd
    Else ' not a date - end loop
    FoundOne = False
    End If
    Loop
    End Sub

  • [已注销]

    [已注销] 2018-04-10 06:34:08

    我把Cuckoo's Nest的程序替你修改了,下面这个可以: Sub GetDateAndReplace() Dim FoundOne As 我把Cuckoo's Nest的程序替你修改了,下面这个可以: Sub GetDateAndReplace() Dim FoundOne As Boolean Selection.HomeKey Unit:=wdStory, Extend:=wdMove FoundOne = True ' loop at least once Do While FoundOne ' loop until no date is found With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = "([0-9]{4})[-]([0-9]{1,2})[-]([0-9]{1,2})" .Format = True .Forward = True .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceNone ' check the find to be sure it's a date If IsDate(Selection.Text) Then If Format(Selection.Text, "mmm") <> "May" Then Selection.Text = Format(Selection.Text, "mmm.dd,yyyy") Else Selection.Text = Format(Selection.Text, "mmm dd,yyyy") End If Selection.Collapse wdCollapseEnd Else ' not a date - end loop FoundOne = False End If Loop End Sub ... Simon

    赞, 不过题主可能要说你的空格不对, 哈哈哈
    本来想省不省略符没什么了不起的, 不过想起来, 有的paper 的MLA format 还是挺重要的。
    不知道什么样的文章有这么多日期

你的回应

回应请先 , 或 注册

155903 人聚集在这个小组
↑回顶部