我正在处理几个Word文档,这些文档要求我将制表符转换或替换为逗号.文字可能如下所示:
Hello........world (dot)
Hello------------World (dash)
Hello____World (line)
Hello world (none)
Run Code Online (Sandbox Code Playgroud)
Word为制表位提供了4种选择:点,短划线,直线和无.但是,我想只将前3个领导者类型替换为逗号.最后一个不会像这样改变:
Hello,world
Hello,World
Hello,World
Hello world
Run Code Online (Sandbox Code Playgroud)
在Word中查找和替换选项卡功能不起作用.因此,经过大量的谷歌搜索,我试图从各种来源"复制并粘贴"到一个简单的宏来完成这项任务(我是Word宏和VBA的新手):
Sub Macro1()
For Each para In ActiveDocument.Content.Paragraphs
For Each aTab In para.TabStops
If aTab.Leader = wdTabLeaderDots _
Or aTab.Leader = wdTabLeaderDashes _
Or aTab.Leader = wdTabLeaderLines Then
TypeText = ","
aTab.Clear
End If
Next aTab
Next para
End Sub
Run Code Online (Sandbox Code Playgroud)
参考:https://msdn.microsoft.com/en-us/library/office/ff192806.aspx
Word说行中有错误:TypeText =","我不知道如何纠正它.
你能帮我看一下这个宏吗?
提前致谢.
P/S:Slai有一个解决这个问题的方法.我只是将第二个代码复制到宏中,稍微修改一下以使其工作:
Sub Macro1()
Dim p As Paragraph, t As TabStop
For Each p In ActiveDocument.Paragraphs
For Each t In p.TabStops
If t.Leader Then p.Range.Find.Execute "^t", , , , , , , , , ",", wdReplaceAll
Next
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
如果您需要宏仅用于选择中的段落,请将ActiveDocument替换为Selection.
查找和替换格式似乎仅在制表位位置已知时才有效:
With ThisDocument.Range.Find
For L = wdTabLeaderDots To wdTabLeaderLines
.ParagraphFormat.TabStops.Add Position:=36, Leader:=L
.Execute "^t", , , , , , , , , ",", wdReplaceAll
Next
End With
Run Code Online (Sandbox Code Playgroud)
另一种方法是检查每个段落的制表位(顺便说一句,WdTabLeader有 6 个值):
Dim p As Paragraph, t As TabStop
For Each p In ThisDocument.Paragraphs
For Each t In p.TabStops
If t.Leader Then p.Range.Find.Execute "^t", , , , , , , , , ",", wdReplaceAll
Next
Next
Run Code Online (Sandbox Code Playgroud)