【问题标题】:literate through each word in the document and replace it with first letter of the word识读文档中的每个单词并将其替换为单词的第一个字母
【发布时间】:2021-07-09 18:02:50
【问题描述】:

我正在编写一个宏,它只保留文档中所有单词的首字母,方法是保留这些单词之间的所有空格并保留文本的特殊字符。

代码如下

Sub rewrite_document_with_Initials()
Set myRange = ActiveDocument.Range
Dim w As String

For Each aWord In myRange.Words
w = aWord
If IsAlphabet(w) = True Then

 aWord.Select
Set A = Selection.Range
A = Left(aWord, 1)
Selection.TypeText A & " "
Else
Debug.Print aWord

 End If
 
Next aWord
End Sub
Function IsAlphabet(inpChar As String) As Boolean
    Dim chkChar As String
    
    'Convert the character to Uppercase.
    'So that there is no need to do a check for Lower and Uppercase seperately.
    chkChar = UCase(inpChar)
    
    'Check whether input character is Alphabet or not
    IsAlphabet = Asc(chkChar) > 64 And Asc(chkChar) < 91
End Function

在上面的代码中,它对文档中的每个单词进行了文盲,并检查它是否包含字母

-如果是,则将其替换为第一个字母。

但问题是,它卡在第一个单词不知道我是否在制作正确的范围或字符串?

如果有最短的方法请建议!

【问题讨论】:

  • 我猜你可以使用正则表达式。
  • 请分享更多细节。谢谢
  • 您的IsAlphabet 会检查单词的第一个字母。所以a1234 是字母表,b$@&amp;#! 也是。您是否打算完全保留这些话?
  • 这些是相互矛盾的要求,您应该严格定义“单词”对您的含义。例如。在文本my address is ibn@ashiq.com 中,单词看到单词myaddressisibnashiqcom,而您可能希望将ibn@ashiq.com 解释为一个单词。你可以说单词边界是空格,但是当不需要时,标点符号也会包含在单词中。

标签: vba ms-word word alphanumeric vba7


【解决方案1】:

用正则表达式试试这个过程。它不是每个单词,而是遍历每个段落,因此它会运行得更快。

Sub rewrite_document_with_Initials()
Dim regex As Object
Dim mColl As Object

Set regex = CreateObject("VBScript.RegExp")        
regex.Global = True
regex.IgnoreCase = True
regex.Pattern = "\B[A-Za-z]+"
'I missed special characters earlier
For i = 1 To ThisDocument.Paragraphs.Count
    ThisDocument.Paragraphs(i).Range.Text = _
        regex.Replace(ThisDocument.Paragraphs(i).Range.Text, "")
Next i
End Sub

【讨论】:

  • No.. 你不需要引用任何东西。添加我的参考资料的图像。还刚刚注意到...如果单词之间有特殊字符,则保留该特殊字符和后面的字母,而不是替换
  • Referred this question .. 无论您不希望在最终输出中使用什么字符,都可以将它们放在括号中,将减号 (-) 放在括号最后。如果您不想要数字,请在 a-z 后面的括号中将它们记为 0-9
  • 亲爱的 Naresh 我认为 thisDcoument 在这里不起作用。我已将 ThisDocument 更改为 ActiveDocument 然后它的工作。你能解释一下吗?感谢您为我提供了如此出色的解决方案
  • 再次感谢。我的文档还包含 fe 图像,当我运行宏时,它会删除这些图像。有没有办法不对这些图像做任何事情?
  • 是的,我测试过了。不知道为什么图片会被删除。
猜你喜欢
  • 1970-01-01
  • 2022-08-24
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 2015-12-29
  • 2020-10-06
  • 2014-08-11
相关资源
最近更新 更多