首页 文章

如何只复制Excel中的单元格的纯文本?

提问于
浏览
3

我正在设计一个Excel工作表,用户将单击命令按钮复制预定范围的单元格 . 然后,用户将使用Firefox或IE将内容粘贴到Web应用程序中 . Web应用程序的设计不受我的控制,目前用于数据输入的文本框是富文本输入 . 当用户粘贴到文本时,这会导致文本看起来很奇怪并且格式化为Excel .

Excel中是否有一种方法可以使用VBA仅复制所选单元格的纯文本?没有格式,没有表格或单元格边框,只有文本,没有别的 . 我当前的解决方法宏是复制单元格,打开记事本,粘贴到记事本,然后从记事本复制以获取纯文本 . 这是非常不受欢迎的,我希望有一种方法可以在Excel中实现这一点 . 请让我知道,谢谢!

6 回答

  • 0

    在Excel中,突出显示相关单元格 . 点击F2 . CTRL Shift Home . (这会突出显示单元格的全部内容 . )CTRL C.转到目标应用程序 . CTRL V.它看起来像很多步骤,但是当你真正这样做时,它比使用色带来完成同样的操作要快得多 .

    如果您需要将多个单元格复制到禁用“粘贴特殊...”工具的应用程序中,则执行常规复制并从Excel粘贴到记事本中,然后从记事本复制并粘贴到目标 . 繁琐,但它的工作原理 .

  • 5

    这可以很容易地解决,而无需打扰VBA .

    用户可以通过Ctrl Shift V而不是更常用的Ctrl V(格式化粘贴)来粘贴剪贴板的内容 .

    Ctrl Shift V将剪贴板内容粘贴为纯文本 .

  • 0

    在Excel 2013中,您可以使用快捷方式执行此操作 .

    按Ctrl Alt V打开粘贴特殊窗口 . 现在,您可以单击值单选按钮,或者如果您的Excel是英语,则只需按V.如果您不使用英语Excel,您可以通过查看单个字母的下划线来查看可以按哪个按钮来选择所需选项 .

    最后按Enter键粘贴复制的选择 .

  • 0

    实际上,最好的方法是复制单元格并粘贴到记事本中 . 记事本无法识别单元格 . 然后,您可以将文本复制回所需的任何单元格 . 这适用于将文本从多个单元格复制到单个单元格中 .

  • 2

    像这样的东西?

    Sheet1.Cells(1, 1).Copy
    Sheet1.Cells(1, 2).PasteSpecial xlPasteValues
    

    要么

    selection.Copy
    Sheet1.Cells(1,2).Activate
    Selection.PasteSpecial xlPasteValues
    

    Copy 复制整个零件,但我们可以控制粘贴的内容 .

    同样适用于 Range 对象 .

    EDIT

    AFAIK,没有简单的方法来复制范围的文本而不将其分配给VBA对象(变量,数组等) . 有一个技巧适用于单个单元格,仅适用于数字和文本(无公式):

    Sub test()
        Cells(1, 1).Select
        Application.SendKeys "{F2}"
        Application.SendKeys "+^L"
        Application.SendKeys "^C"
        Cells(1, 3).Select
        Application.SendKeys "^V"
    End Sub
    

    但大多数开发人员都避免使用 SendKeys ,因为它可能不稳定且不可预测 . 例如,上面的代码仅在从excel执行宏时才起作用,而不是从 VBA 执行 . 当从 VBA 运行时, SendKeys 打开对象浏览器,这是F2在VBA视图中按下时所执行的操作:)此外,对于全范围,您将必须循环遍历单元格,逐个复制它们并将它们粘贴一个一个应用程序 . 现在我认为更好,我认为这是一个矫枉过正的..

    使用数组可能更好 . 这是我最喜欢的关于如何将范围传递给vba数组并返回的参考:http://www.cpearson.com/excel/ArraysAndRanges.aspx

    就个人而言,我会避免 SendKeys 并使用数组 . 应该可以将数据从 VBA 数组传递给应用程序,但如果不了解有关应用程序的更多信息,很难说 .

  • 0

    如果你要处理很多要复制的单元格,那么selection.copy方法将会非常慢 . (我在200 000条记录上运行宏时经历过这种情况) .

    性能提高100倍的方法是直接将一个单元格的值分配给另一个单元格 . 我的代码示例:

    With errlogSheet
             'Copy all data from the current row
    
              reworkedErrorSheet.Range("A" & reworkedRow).Value = .Range("A" & currentRow).Value
              reworkedErrorSheet.Range("B" & reworkedRow).Value = .Range("B" & currentRow).Value
              reworkedErrorSheet.Range("C" & reworkedRow).Value = .Range("C" & currentRow).Value
              reworkedErrorSheet.Range("D" & reworkedRow).Value = .Range("D" & currentRow).Value
              reworkedErrorSheet.Range("E" & reworkedRow).Value = .Range("E" & currentRow).Value
    

相关问题