【问题标题】:Copying Excel Range to Word as A Table Problems将 Excel 范围复制到 Word 作为表格问题
【发布时间】:2014-09-02 17:01:59
【问题描述】:

我在通过 VBA 复制 Excel 范围并将其粘贴为 Word 中的表格时遇到问题。当我使用以下内容复制 Excel 表并粘贴到 Word 时,我的超链接不会复制过来(ExcelDataRange 是 Excel.Range 和 WordText = MyWordDoc.Selection)。

ExcelDataRange.Copy
WordText.Range.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=True

所以我的解决方法是通过这样的循环一次插入一个超链接 (Set WordTable = MyWordDoc.Tables(NewlyAddedTable)):

For J = 1 To WordTable.Columns.Count
    If LenB(ExcelDataRange.Cells(4, J).Value2) > 0 Then
        MyWordDoc.Hyperlinks.Add WordTable.Cell(4, J).Range, _
        ExcelDataRange.Cells(4, J).Hyperlinks(1).Address, ExcelDataRange.Cells(4, J).Hyperlinks(1).SubAddress
    End If
Next J

这种方法的问题是 .SubAddress 没有完全从 Excel 复制过来。我的链接包含:“\\NetworkName\ItemOfInterest”,但复制结果为“\NetworkNameItemOfInterest”。第一个反斜杠和中间反斜杠丢失了。

如果我手动将表格从 Excel 复制并粘贴到 Word,则超链接存在且正确。

编辑:我正在使用 RTF:=True 使表格具有与 Excel 一样的确切格式,但这不是超链接的内容。我使用这个参数是因为当设置为 false 时行高不可调整。

【问题讨论】:

  • 您使用的是什么版本的 Word?此外,当您声明您的超链接最初没有复制时(在建立循环之前),您的意思是什么都没有被复制,或者链接文本复制为没有操作链接的纯文本?后者是我在将链接转换为字段编码的超链接之前在 Word 2010 中得到的,这允许它在 Word 中工作。
  • 我使用的是 Word 2010。带有 RTF:=True 的复制粘贴复制文本和格式,但没有复制链接。所以我将它设置为 false 并且只需要做更多的操作。我可以关闭这个问题,但我不知道该怎么做。你呢?
  • 写下您为解决问题所做的工作作为答案。发布答案后,您的答案旁边将显示复选标记的轮廓。单击复选标记,使其变为绿色。这会将您的答案标记为正确的。

标签: excel vba ms-word


【解决方案1】:

我使用 RTF:=True 参数将 Excel 范围的格式设置到 Word 表中,但这不允许复制超链接。所以,我用了:

.Range.PasteExcelTable LinkedToExcel:=False, WordFormatting:=True, RTF:=False

RTF:=False 允许正确插入超链接。缺点是我必须添加额外的代码来格式化 Word 表格以匹配 Excel 范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多