Vba 循环和选择活动文档
我需要做的是复制一个段落并将其粘贴到一个新文件中,保存该文件,然后让它自动为下一个段落执行相同的操作。我的代码只做过一次。然而,我的文档有250页长,有300多个段落,所以我需要它来自动循环。以下是我目前的代码:Vba 循环和选择活动文档,vba,ms-word,Vba,Ms Word,我需要做的是复制一个段落并将其粘贴到一个新文件中,保存该文件,然后让它自动为下一个段落执行相同的操作。我的代码只做过一次。然而,我的文档有250页长,有300多个段落,所以我需要它来自动循环。以下是我目前的代码: Sub clicktest() ' ' clicktest Macro ' ' Selection.MoveDown Unit:=wdParagraph, Count:=34, Extend:=wdExtend Selection.Mo
Sub clicktest()
'
' clicktest Macro
'
'
Selection.MoveDown Unit:=wdParagraph, Count:=34, Extend:=wdExtend
Selection.MoveDown Unit:=wdLine, Count:=2, Extend:=wdExtend
Selection.Copy
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.MoveDown Unit:=wdLine, Count:=37
Documents.Add DocumentType:=wdNewBlankDocument
Selection.PasteAndFormat (wdFormatOriginalFormatting)
Dim PathAndFileName As String, n As Long
PathAndFileName = "\\r04brxnas20\VHABRXOSTROR$\Trace"
If Dir(PathAndFileName & ".txt") = "" Then
ActiveDocument.SaveAs (PathAndFileName & ".txt"), FileFormat:=wdFormatText
Else
n = 1
Do While Dir(PathAndFileName & n & ".txt") <> ""
n = n + 1
Loop
ActiveDocument.SaveAs PathAndFileName & n & ".txt"
End If
End Sub
子点击测试()
'
'单击测试宏
'
'
Selection.MoveDown单位:=WD段落,计数:=34,扩展:=wdExtend
Selection.MoveDown单位:=wdLine,计数:=2,扩展:=wdExtend
选择,复制
Selection.MoveLeft单位:=wdCharacter,计数:=1
Selection.MoveDown单位:=wdLine,计数:=37
文档。添加文档类型:=wdNewBlankDocument
Selection.PasteAndFormat(WDFormat原始格式)
Dim PathAndFileName作为字符串,n作为长度
PathAndFileName=“\\r04brxnas20\vhabxostror$\Trace”
如果Dir(路径和文件名&“.txt”)=”则
ActiveDocument.SaveAs(路径和文件名&“.txt”),文件格式:=wdFormatText
其他的
n=1
执行While Dir(路径和文件名&n&“.txt”)
n=n+1
环
ActiveDocument.SaveAs路径和文件名&n&“.txt”
如果结束
端接头
我遇到的问题是循环此文档,并使活动文档成为原始文档,以便它自动选择正确的段落。在
段落
集合上进行简单循环可能会起作用
此外,由于您似乎只关心创建纯文本输出文件,因此不需要复制
或粘贴
任何内容,事实上甚至不需要使用新的文档
,所有这些都可以通过标准I/O语句完成
这里就是这种方法,我还整理了文件命名convent&loop,它在我尝试时出现了一个错误
Sub copyparagraphs2()
Dim pg As Paragraph
Dim doc As Document
Dim ff As Integer
Dim Path As String, n As Long
Dim filename As String
Path = "\\r04brxnas20\VHABRXOSTROR$\Trace\"
Set doc = ActiveDocument
'# Loop over the PARAGRAPHS in this document
For Each pg In doc.Paragraphs
'# Construct a file path that doesn't already exist:
Do While Not Dir(Path & n & ".txt") = ""
n = n + 1
Loop
'# specify the filename
filename = n & ".txt"
'# Create the text file
CreateObject("Scripting.FileSystemObject").CreateTextFile (Path & filename)
'# print the text to the text file
ff = FreeFile
Open Path & filename For Output As #ff
Print #ff, pg.Range.Text
Close ff
Next
End Sub
这样就不必担心哪个文档处于活动状态或选择状态
下面是一篇相关文章,介绍了尽可能避免选择/激活的原因。它是为Excel编写的,其中的选择
对象比Word中的对象更容易避免使用,但同样的一般原则也适用
它现在在做什么,这与您希望它做的不同?@eddie_-cat,来自OP:我的代码只做过一次。然而,我的文档有250页长,有300多个段落,所以我需要它来自动循环。