【问题标题】:How do I create a Bookmark after another Bookmark using VBA Excel?如何使用 VBA Excel 在另一个书签之后创建一个书签?
【发布时间】:2021-02-17 01:46:25
【问题描述】:

我在 Excel 中有一个用于计算一些计算的 vba 代码。之后,我想将我获得的一些计算结果保存到 Word 文档中。在这个 Word 文档中有一个像这样的项目符号列表:

  • XXXXX

XXXXX 有一个名为“ENTERPRISE”的书签。我想要一个代码,在使用 Excel 打开 Word 文档后,它会在列表上创建更多项目符号,因为它取决于 Excel 计算的企业数量。

例如,Excel 表示有 3 个企业。因此,列表应如下所示:

  • XXXXX
  • XXXXX
  • XXXXX

每个 XXXXX 都有一个不同的书签,我会在上面写下每个企业的名称。

我目前有以下代码:

    Dim wrdApp As Object, wrdDoc As Object
    Dim strPath As String
    
    strPath = "C:\Users\xxxx.docx"
    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = True
    Set wrdDoc = wrdApp.Documents.Open(Filename:=strPath)
    wrdDoc.Bookmarks("ENTERPRISE").Range.Text = "Enterprise 1"
    wrdDoc.Bookmarks.Item("ENTERPRISE").Range.InsertParagraphAfter 'It inserts a new bullet point but without bookmark

感谢您的回答,如果您有任何问题,请随时问我!

【问题讨论】:

    标签: excel vba ms-word bookmarks


    【解决方案1】:

    例如: wrdDoc.Bookmarks("ENTERPRISE").Range.Text = "Enterprise 1" & vbCr & "Enterprise 2" & vbCr

    对于一个循环,你可能会使用类似的东西:

    Dim i As Long, r As Long, StrOut As String
    For i = 1 To n
      With ActiveSheet.Range("A" & r)
        If .Value <> "" Then StrOut = StrOut & vbCr & .Value
      End With
      StrOut = Left(StrOut, Len(StrOut) - 1)
    Next
    wrdDoc.Bookmarks("ENTERPRISE").Range.Text = StrOut
    

    【讨论】:

    • 是的!谢谢,这正是我想要的。我只需要找到一种方法,它使用循环插入我需要的企业数量。因为我可以有 2, 3, 4, ... 但在进行 excel 计算之前我不知道。如果你知道方法可能吗?如果没有,我会自己尝试,我会标记您的解决方案。无论如何,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 2018-02-20
    • 2022-06-12
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多