Microsoft Excel 复制黏贴(不带引号)

6

问题1:

如何从 Excel 文件中复制粘贴 cell 值而不复制 quotes(" & ")?

问题2:

粘贴时也会忽略下一行字符。

Excel 文件文本:

Excel Text

粘贴后的文本:

Pasted Text

备注:我只能通过先将值粘贴到 MS Word 中,然后从 MS Word 文件中粘贴到文本文件中来避免引号。


如果单元格包含换行符,则Excel会复制单元格值,用引号括起来(复制缓冲区的纯文本部分)。我还没有找到任何好的解决方案;目前我正在构建字符串,使用一些不常见的字符(#)代替换行符,并在Notepad ++中将#替换为换行符。当然,也可以创建Excel宏,半自动地完成所有相同的操作。 - Arvo
@Arvo 是的,你说得对。如果我删除换行符,那么它会按预期粘贴,但我需要换行符。你有什么解决方法吗? - Kylo Ren
1个回答

4

这个问题你无法做太多事情。但是有一个解决办法。

你可以使用 CLEAN 函数,如:=CLEAN(A1) (指定你的单元格地址)。然后将文本复制到记事本中,你就会得到所需的结果。

但是 CLEAN 函数也会从文本中删除换行符,因为此函数会删除文本中的所有不可打印字符。

编辑1: _________________________________________________________________________________

进入图像描述

这是复制后结果的区别。

进入图像描述


编辑2: __________________________________________________________________________________

以下是 VBA 解决方案。尝试以下代码:

Sub CopyToNotepad()
    Dim objData As New DataObject  'set reference to Microsoft Forms 2.0 Object Library
    Dim strTemp As String
    Dim i As Long, FN As Integer
    Dim FilePath As String, FileName As String
    Dim MyRange As Range
    Dim cell As Variant

    FilePath = "C:\test file\"   '---> give your file path
    FileName = "test.txt"        '---> give your file name
    FileName = FilePath & FileName
    FN = FreeFile

    Open FileName For Output As #FN

    Set MyRange = Worksheets("Sheet1").Range("A3:A5")
    For Each cell In MyRange.Cells
        strTemp = Replace(cell.Value, Chr(10), vbCrLf)
        objData.SetText (strTemp)
        Print #FN, strTemp
    Next

    Close #FN
End Sub

要在您的代码中使用 DataObject,必须设置对 Microsoft Forms 2.0 Object Library 的引用。这将给您像下面图片中的输出结果: enter image description here

1
@KyloRen - 如果您的文本在单元格A1中,那么只需在任何单元格(例如单元格B1)中输入“=CLEAN(A1)”即可。 - Mrig
1
但这也会删除换行符,我希望它们能够保留在粘贴的文本中。 - Kylo Ren
但是在应用清理函数后,很明显它们已经被删除了,在单元格B(n)中。 - Kylo Ren
@KyloRen - 是的,不幸的是这就是CLEAN函数所做的事情。但是在将数据粘贴到记事本后,您可以删除该列。 - Mrig
括号在同一行,这就是我在问题中指出的问题二。 - Kylo Ren
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接