Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Word宏以引号计算单词数_Vba_Ms Word_Word Count - Fatal编程技术网

Vba Word宏以引号计算单词数

Vba Word宏以引号计算单词数,vba,ms-word,word-count,Vba,Ms Word,Word Count,我正在为大学写论文,我不允许在我的总字数中加上引号。由于Word没有这样做的功能,我希望有人能够通过创建宏来帮助我。我以前使用过宏,但我对像这样复杂的东西(如果它真的那么复杂的话)几乎没有经验 我已经有了一些类似于在整个文档中处理引用的东西,所以拥有这两种东西将是一个很大的帮助。我将把这段代码复制到下面,这样你就可以大致了解我需要什么,除了引用而不是引用 所以我想知道是否有人能够生成一个宏来计算整个文档中引号中使用的单词数 Sub CitationWordCount() Dim Fld As

我正在为大学写论文,我不允许在我的总字数中加上引号。由于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
几个月前,Paul Edstein(Macrood)在一篇文章中为这个问题写了一个解决方案


这将给出总字数和引号中的总字数。要获得您的总数,只需从总字数中减去引号中的字数。

您用于引用的代码在哪里?抱歉,现在添加了引用编码!“如果有人能够生成一个[…]的宏”-这绝对不是这个网站的目的。请阅读并阅读Scott链接到的帖子链接。堆栈溢出不是代码编写服务。“我有做X的代码,我需要做Y的代码”并不是一个关于特定编程问题的问题,也不是一个解决手头问题的问题(是Y,不是X)。研究正则表达式如何帮助您从输入中提取匹配的带引号的子字符串。这在这个网站上不是一个有效的问题-仅供参考,这个网站有一个自动系统,将对你提出问题,如果你一直问这样的问题,我只是想帮助你不要让自己被禁止。您需要解决的问题是在输入字符串中查找匹配的引号,而这个问题表明,在解决该问题方面没有任何研究工作。哦,顺便说一句,我的回答是“是的,我可以写,不,我不是在这个网站上免费为你写的,因为这不是这个网站的目的”。明白了吗?谢谢,我找的时候什么都没找到。显然,他看上去并不难enough@Dom.Ibbz要了解任何与Word VBA相关的信息,请始终访问ms office论坛-那里有一些真实的Word MVP,他们几乎为Word编写了任何东西(如果您给他们时间,他们也非常愿意为您编写免费代码)。感谢您的帮助,我以后一定去那里看看!
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