如何从 Excel 复制包含制表符的文本(不带引号)?

如何从 Excel 复制包含制表符的文本(不带引号)?

我注意到,一个包含标签复制时嵌入了引号。我正在寻找不带引号的此类单元格。


示例

我有 5 个单元格:A1、A2、A3、A4 和 A5。它们的公式如下:

在此处输入图片描述

它们在 Excel 上的样子如下:

在此处输入图片描述

公式设置如下,使得将单元格复制到文本编辑器时的预期结果如下:

在此处输入图片描述

不幸的是,我得到的结果是:

在此处输入图片描述

问题在于引号。我需要复制那些不带引号的单元格。

答案1

那么 VBA 解决方案如何?这会将所有选择从左上角选定的单元格复制到右下角选定的单元格。如果您选择不协调的单元格,此代码将收集左上角和右下角之间的所有内容。当然,您可以更改这一点。这样更简单。它在列之间放置制表符,在行之间放置换行符。

Sub CopyText()

    Dim obj As Object
    Dim rng As Range
    Dim r As Long, c As Long
    Dim s As String
    Dim rTL, rBR, cTL, cBR

    rTL = Selection.Cells(1, 1).Row
    cTL = Selection.Cells(1, 1).Column

    For Each rng In Selection.Cells
        If rng.Row < rTL Then rTL = rng.Row
        If rng.Column < cTL Then cTL = rng.Column
        If rng.Row > rBR Then rBR = rng.Row
        If rng.Column > cBR Then cBR = rng.Column
    Next

    For r = rTL To rBR
        For c = cTL To cBR
            s = s & Cells(r, c).Value
            If c < cBR Then s = s & Chr(9)
        Next
        If r < rBR Then s = s & vbNewLine
    Next

    Set obj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    obj.SetText s
    obj.PutInClipboard
    Set obj = Nothing

End Sub

如果你对这部分感到疑惑:

Set obj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

...这只是后期绑定版本,Set obj = New DataObject因此您不必在 VBA 中添加任何引用。

相关内容