使用VBA代码将表格从Excel复制到Word书签

使用VBA代码将表格从Excel复制到Word书签,excel,ms-word,bookmarks,vba,Excel,Ms Word,Bookmarks,Vba,我实际上需要你的帮助来修改这个宏代码。我从别的地方得到这个密码对不起,忘了他的名字!。基本上,我有来自excel Sheet1的表数据源。我需要用我的书签“bookmark”将此表传输到MS Word,保留边框、字体大小、自动调整等格式。 需要注意的是: 书签的位置在最后一段。我的Word文件中有超过12段,但表格应该放在最后一段。 请注意,表数据源中的行数和列数是动态的。这意味着,行和列的数量不是固定的。它可以改变。我现有的宏代码适用于此。但是,它完全删除了现有的段落。桌子把我档案里的东西都放

我实际上需要你的帮助来修改这个宏代码。我从别的地方得到这个密码对不起,忘了他的名字!。基本上,我有来自excel Sheet1的表数据源。我需要用我的书签“bookmark”将此表传输到MS Word,保留边框、字体大小、自动调整等格式。 需要注意的是:

书签的位置在最后一段。我的Word文件中有超过12段,但表格应该放在最后一段。 请注意,表数据源中的行数和列数是动态的。这意味着,行和列的数量不是固定的。它可以改变。我现有的宏代码适用于此。但是,它完全删除了现有的段落。桌子把我档案里的东西都放了。我不知道将此表放置到书签所在位置的确切宏代码。 感谢您对第2项的帮助。代码如下:


问题就在这条线之内:

Set oRange = oDoc.Range
现在,它定义了整个文档范围,而不是书签的范围。 您应该使用以下内容:

Set oRange = oDoc.Bookmarks("BookmarkName").Range
关于您的新问题,一种解决方法是将表直接放入文档的最后一段,而不使用书签

Set oRange = oDoc.Range.Paragraphs(oDoc.Range.Paragraphs.Count).Range

因为表格应该放在最后一段,所以不需要书签或任何复杂的范围设置。您所需要的只是:

With oDoc
  Set oTable = .Tables.Add .Range.Characters.Last, iTotalRows, iTotalCols
End with
至于输出格式,而不是:

txt = Worksheets("Sheet1").Cells(iRows, iCols)
            oTable.cell(iRows, iCols).Range.Text = txt
使用:


在更基本的层面上,为什么不简单地复制和粘贴Excel范围作为一个步骤,而不是通过复杂的表格创建和逐单元格填充?

非常感谢!你救了我的星期五!祝你有美好的一天!嗨,先生!这是我自己想出来的!非常感谢你!我还有几个问题。我的VBA宏保持不变。1.我只想复制粘贴表范围,不包括嵌入返回空字符串的公式的单元格。在我当前的代码中,它确实包括。我怀疑是因为它在itotalrows和itotalcolumns中都使用了这种用法。我怎样才能编辑这个?2.此外,当我复制并粘贴数据时,excel中的数字有逗号,但当使用邮件合并将其导出到word中时,它不再有逗号和.00。如何修改宏?先生,非常感谢您@Ladytara您的代码中与邮件合并无关。
txt = Worksheets("Sheet1").Cells(iRows, iCols)
            oTable.cell(iRows, iCols).Range.Text = txt
oTable.cell(iRows, iCols).Range.Text = Worksheets("Sheet1").Cells(iRows, iCols).Text