首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Word中使用VBA创建文本和表格后将其删除

在Word中使用VBA创建文本和表格后将其删除
EN

Stack Overflow用户
提问于 2012-07-26 17:17:26
回答 1查看 2.1K关注 0票数 2

我有一些编程邮件合并的问题,因为我的代码创建的每个内容都必须删除,以便在合并过程中不会妨碍下一个字母。

所以我写了一个测试宏来创建一些表并删除它们。

这是我的进展-它可以在一个新的空Word-File中运行,并带有一个名为"test“的书签

代码语言:javascript
复制
Sub TabsNText()

    Const k As Integer = 2

    Dim doc As Document
    Dim rng As Range
    Dim tab_rngs(k) As Range
    Dim txt_rngs(k) As Range
    Dim tbl As Table

    Set doc = Word.ActiveDocument
    Set rng = doc.Bookmarks("test").Range

    Dim i As Integer

    For i = 1 To k
        Set txt_rngs(i) = rng
        rng.Text = "Title " & i

        rng.Collapse Direction:=wdCollapseEnd
        rng.InsertParagraphAfter
        rng.Collapse Direction:=wdCollapseEnd

        Set tab_rngs(i) = rng

        Set tbl = doc.Tables.Add(rng, 3, 3)
        tbl.Cell(1, 1).Range.Text = "Table" & i
        tbl.Borders.Enable = True

        Set rng = tbl.Range

        rng.Collapse Direction:=wdCollapseEnd
        rng.InsertParagraphAfter
        rng.Collapse Direction:=wdCollapseEnd
    Next i

    rng.Select

    MsgBox ("Now, let's delete that!")

    For i = 1 To k
        txt_rngs(i).Text=""
        tab_rngs(i).Tables(1).Delete
        doc.Bookmarks.Add Name:="test", Range:=rng
    Next i

End Sub

你看。表将被正确删除。但是文本和段落又是什么呢?有没有一种方法可以只选择从一个起点到某个终点,然后删除其中的所有内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-26 22:04:39

好的-我找到了一个简单的解决方案,使用了定义从起点到其他范围的终点的能力。但是由于Ranges的位置非常不稳定(特别是在混合文本和表格时),可以使用辅助书签来定义起始点。

代码语言:javascript
复制
Sub TabsNText()

    Const k As Integer = 2

    Dim doc As Document
    Dim rng As Range
    Dim tbl As Table
    Const startbkm As String = "test_start"
    Const insertbkm As String = "test"

    Set doc = Word.ActiveDocument
    Set rng = doc.Bookmarks(insertbkm).Range

    doc.Bookmarks.Add Name:=startbkm, Range:=rng

    Dim i As Integer

    For i = 1 To k
        rng.Text = "Title " & i

        rng.Collapse Direction:=wdCollapseEnd
        rng.InsertParagraphAfter
        rng.Collapse Direction:=wdCollapseEnd

        Set tbl = doc.Tables.Add(rng, 3, 3)
        tbl.Cell(1, 1).Range.Text = "Table" & i
        tbl.Borders.Enable = True

        Set rng = tbl.Range

        rng.Collapse Direction:=wdCollapseEnd
        rng.InsertParagraphAfter
        rng.Collapse Direction:=wdCollapseEnd
    Next i

    MsgBox ("Now, let's delete that!")

    doc.Range(doc.Bookmarks(startbkm).Range.start, _
              rng.End).Delete

    doc.Bookmarks.Add Name:=insertbkm, Range:=rng
    doc.Bookmarks(startbkm).Delete


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

https://stackoverflow.com/questions/11666114

复制
相关文章

相似问题

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