Vba 循环和选择活动文档

Vba 循环和选择活动文档,vba,ms-word,Vba,Ms Word,我需要做的是复制一个段落并将其粘贴到一个新文件中,保存该文件,然后让它自动为下一个段落执行相同的操作。我的代码只做过一次。然而,我的文档有250页长,有300多个段落,所以我需要它来自动循环。以下是我目前的代码: Sub clicktest() ' ' clicktest Macro ' ' Selection.MoveDown Unit:=wdParagraph, Count:=34, Extend:=wdExtend Selection.Mo

我需要做的是复制一个段落并将其粘贴到一个新文件中,保存该文件,然后让它自动为下一个段落执行相同的操作。我的代码只做过一次。然而,我的文档有250页长,有300多个段落,所以我需要它来自动循环。以下是我目前的代码:

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多个段落,所以我需要它来自动循环。