vba - 在字符之间插入换行符
问题描述
所以我试图在 MS Word 上格式化许多文本,这些文本来自一个网站。
问题是当我将它粘贴到 Word 时,不包括中断。所以,我有一个很大的段落,每个部分都卡住了。
我设法通过使用查找和替换功能将大部分部分分开,但仍然存在一个问题:
每次有一个小写字符直接后跟一个大写字符时,我需要在它们之间插入一个中断。
例如:玫瑰是红色的,紫罗兰是蓝色的。
我试图在 VBA 上编写一个宏,但它不起作用,并返回“错误 424:需要对象”。在这一点上,我已经很多年没有练习过任何 VBA,我迷路了。如果有人可以帮助我,那就太好了!
这是我写的:
Dim doc As Word.Document
Set doc = ActiveDocument
Dim string1 As String
Dim Char1 As String
Dim Char2 As String
With doc.Range
With Selection.Find
.Forward = True
.Wrap = wdFindStop
.MatchWildcards = True
.Text = "[a-z][A-Z]"
.Execute
If Find.Found = 1 Then
string1 = Selection.Text
Char1 = Left(string1, 1)
Char2 = Right(string1, 1)
string1 = Char1 + vbNewLine + vbNewLine + Char2
End If
.Replacement.Text = string1
End With
End With
谢谢 !
解决方案
我能够使用下面提到的代码实现您正在寻找的东西。请看看它是否也适合你。
Sub Find_Replace()
Dim string1 As String
Dim Char1 As String
Dim Char2 As String
Do While ActiveDocument.Range.Find.Execute("[a-z][A-Z]", , , True)
With Selection.Find
.Text = "[a-z][A-Z]"
.Wrap = wdFindContinue
.Forward = True
.MatchWildcards = True
.Execute
If .Found Then
string1 = Selection.Text
Char1 = Left(string1, 1)
Char2 = Right(string1, 1)
string1 = Char1 + vbNewLine + vbNewLine + Char2
End If
.Execute ReplaceWith:=string1
End With
Loop
MsgBox "Task Complete"
End Sub
推荐阅读
- javascript - 使用 JavaScript 循环遍历 Json 文件中的多个数组
- sublimetext3 - 试图忽略 Sublime 中的 flake8 W503 错误,但对用户设置的编辑不会影响它
- amazon-web-services - 使用放大 Auth.currentCredentials() 时出现“配置中缺少凭据”错误
- javascript - 如何将 --max-old-space-size=8192 应用于 Ubuntu 服务
- mysql - 如何获得今天和第二天早上 8 点之间的小时差 - MYSQL
- python - Python:如何根据函数的参数创建 csv 列
- azure - 从 Microsoft Graph 安全 API 中提取扩展属性?
- ruby-on-rails - 组织数据产品及其历史价格的最佳方式是什么?
- python - 如何在 Python 中获取处理器温度?
- javascript - 如何以尽可能少的字节将图像文件存储在 utf-8 HTML 源中?