首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环和选择活动文档

循环和选择活动文档
EN

Stack Overflow用户
提问于 2014-08-05 02:28:01
回答 1查看 176关注 0票数 1

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

代码语言:javascript
复制
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

我遇到的问题是循环这段代码,让活动文档成为原始文档,这样它就会自动选择正确的段落。

EN

回答 1

Stack Overflow用户

发布于 2014-08-05 02:36:00

Paragraphs集合上执行一个简单的循环可能会起作用。

此外,由于您似乎只关心创建纯文本输出文件,因此不需要CopyPaste任何东西,实际上甚至不需要使用新的Document,所有这些都可以使用标准I/O语句来完成。

这是一种方法,我还整理了命名为convent & loop文件,该文件在我尝试时出现了错误。

代码语言:javascript
复制
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

这就避免了担心哪个文档完全是Active还是Selection

这是一篇关于尽可能避免选择/激活的原因的相关阅读。它是为Excel编写的,在Excel中,Selection对象比在Word中更容易避免使用,但也适用相同的一般原则。

How to avoid using Select in Excel VBA macros

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25125197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档