2017-10-12 59 views
-1

我正在爲我的大學撰寫我的論文,而且我不允許將單詞用在引號中,用於我的總字數。由於Word沒有這樣做的功能,我希望有人能夠通過創建一個宏來幫助我。我之前使用過宏,但對於像這樣複雜的事情,我的經驗非常少(如果它甚至那麼複雜)。Word宏用來計算引號中的單詞

我已經有了類似的工作與整個文件中的引用,所以這些都將是一個很大的幫助。我將在下面複製此代碼,以便您可以大致瞭解我需要的內容,除了用引號而不是引用。

所以我想知道是否有人能夠生成一個宏,計算整個文檔中使用引號的單詞數量?

Sub CitationWordCount() 

Dim Fld As Field, l As Long, StrTmp As String 
For Each Fld In ActiveDocument.Fields 
    With Fld 
    If .Type = wdFieldCitation Then 
     StrTmp = .Result 
     l = l + UBound(Split(StrTmp, " ")) + UBound(Split(StrTmp, "-")) + 1 
     StrTmp = .Code.Text 
     l = l + Len(StrTmp) - Len(Replace(StrTmp, "\n", "\")) 
    End If 
    End With 
Next 
MsgBox "There are " & l & " words in citations in this document.", , "Citation Word Count" 
End Sub 
+1

[爲什麼「有人可以幫我嗎?」不是一個實際的問題?](http://meta.stackoverflow.com/q/284236) –

+0

你用於引用的代碼在哪裏? – Robby

+0

對不起,現在添加引用文字的代碼! –

回答

-1

保羅Edstein(macropod)寫了一個解決這個問題幾個月前就http://www.msofficeforums.com/word-vba/33866-count-words-between-quotation-marks.html

Sub Demo() 
Application.ScreenUpdating = False 
Dim i As Long, j As Long 
With ActiveDocument 
    j = .ComputeStatistics(wdStatisticWords) 
    With .Range 
    With .Find 
     .ClearFormatting 
     .Replacement.ClearFormatting 
     .Text = "[「" & Chr(34) & "]*[" & Chr(34) & "」]" 
     .Replacement.Text = "" 
     .Forward = True 
     .Wrap = wdFindStop 
     .Format = False 
     .MatchWildcards = True 
     .Execute 
    End With 
    Do While .Find.Found 
     i = i + .ComputeStatistics(wdStatisticWords) 
     .Collapse wdCollapseEnd 
     .Find.Execute 
    Loop 
    MsgBox "This document contains " & j & " words ," & vbCr & _ 
     "of which " & i & " (" & Format(i * 100/j, "0.00") & _ 
     "%) are in quotes." 
    End With 
End With 
Application.ScreenUpdating = True 
End Sub 

這會給你總字數和引號中的單詞總量。要獲得總數,只需從總詞中扣除引號中的單詞。

+0

謝謝,當我看時,我找不到任何東西。顯然沒有看起來夠硬 –

+1

@ Dom.Ibbz對於任何與Word VBA相關的東西,總是要經常去檢查ms office論壇 - 那裏有一些真正的Word MVP,那裏面寫了幾乎所有東西以及Word在太陽下的所有東西(它們是如果你給他們時間,也非常願意爲你寫免費代碼)。 – dwirony

+0

謝謝您的幫助,我一定會在將來查看! –