excel - 将多个嵌套表格复制并粘贴到特定的 Word 表格单元格中
问题描述
我已经使用 WordEditor 在 Outlook 模板中创建了一个表格,并计划将 Excel 工作簿中的多个范围复制并粘贴为该表格特定单元格中的嵌套表格 - 想法是每次将新表格粘贴到在这个单元格中,所有现有表格都被推开(我可以稍后确定表格的位置)。
我打算使用书签来粘贴范围,但不熟悉符号并且很难在网络上找到任何相关文档
Dim wdDoc As Word.Document
Dim ws_sum, ws As Worksheet
Dim tblSess As Word.Table
......
......
With ws_sum
wdDoc.Bookmarks.Add Name:="tab", Range:=tblSess.cell(2, 1).Range
.Range(.Cells(9, 3), .Cells(12, 7)).Copy
wdDoc.Bookmarks("tab").Range.PasteAsNestedTable
.Range(.Cells(24, 2), .Cells(31, 10)).Copy
wdDoc.Bookmarks("tab").Range.PasteAsNestedTable
......
End With
我遇到的问题是,目前每次我粘贴一个新的嵌套表时,它都会完全删除带书签的单元格的内容。我尝试通过将 'Range:=tblSess.cell(2, 1).Range' 替换为 'Range:=tblSess.cell(2, 1).Range(0,0)' 来指定单元格的第一个条目,但这会抛出运行时出现错误。还有另一种方法可以做到这一点吗?
解决方案
当然有不止一种方法可以解决这个问题。无论如何,关键是
- 确保单元格的开头有一个空段落标记。这为下一次插入提供了一个返回位置,这样它就不会最终嵌套在另一个粘贴的表中。
- 使用
Range
对象。我更喜欢两个:一个作为单元格的开头,另一个作为粘贴目标。
以下代码片段基于问题中的代码,说明了:
Dim rngCellStart As Word.Range, rngTarget As Word.Range
Set rngTarget = tblSess.Cell(2, 1).Range
rngTarget.Collapse wdCollapseStart
Set rngCellStart = rngTarget.Duplicate
'put a paragraph mark before the table that is pasted
rngTarget.InsertBefore vbCr
'Move the target Range to leave out that paragraph
rngTarget.MoveStart wdCharacter, 1
'may no longer be needed... but could be used to mark
'the starting point of the cell as that is where it stays
'wdDoc.Bookmarks.Add Name:="tab", Range:=rngCellStart
.Range(.Cells(9, 3), .Cells(12, 7)).Copy
rngTarget.PasteAsNestedTable
'Following paste actions for additional tables.
'Could be put in a separate procedure and called in a loop
rngCellStart.InsertBefore vbCr
Set rngTarget = rngCellStart.Duplicate
rngTarget.Collapse wdCollapseEnd
.Range(.Cells(24, 2), .Cells(31, 10)).Copy
rngTarget.PasteAsNestedTable
推荐阅读
- reactjs - 如何通过使用 react 和 typescript 输入 url 来限制用户访问特定页面?
- c - 使用malloc初始化char *后如何获取char *指向的连续内存长度?
- php - 带有连接和值的 SQL 插入
- c# - 列表仅返回第一个值
- c# - C# 单元测试复杂的多线程数据库读取
- ethereum - web3 发送数据和令牌
- jquery - 如果(垂直)滚动条在另一个 div 中可见,则向 div 添加填充
- javascript - 如何使用 GET 方法向 URL 添加警报提示以从 URL 获取数据
- javascript - javascript - replace() 删除字符串中所有重复的字母
- serial-port - 如何在扭曲的串行控制线上生成事件