![如何从 Excel 复制包含制表符的文本(不带引号)?](https://linux22.com/image/1455446/%E5%A6%82%E4%BD%95%E4%BB%8E%20Excel%20%E5%A4%8D%E5%88%B6%E5%8C%85%E5%90%AB%E5%88%B6%E8%A1%A8%E7%AC%A6%E7%9A%84%E6%96%87%E6%9C%AC%EF%BC%88%E4%B8%8D%E5%B8%A6%E5%BC%95%E5%8F%B7%EF%BC%89%EF%BC%9F.png)
我注意到,一个包含标签复制时嵌入了引号。我正在寻找不带引号的此类单元格。
示例
我有 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 中添加任何引用。