将内容复制到文本编辑器时保留 Excel 格式

将内容复制到文本编辑器时保留 Excel 格式

我有一个 Excel 文件,其中有一列代码,这些代码以某种格式表示父子关系:

代码

缩进由“左(缩进)”上的“缩进级别”选项控制。复制并粘贴到文本编辑器不会保留间距。

我希望能够将空格复制并粘贴到文本编辑器中。我能否以某种方式使格式明确化 - 添加一个指示缩进级别的列或类似内容?

答案1

我认为您无法使用 Excel 的内置功能来执行此操作,但是您可以创建 Excel 宏来执行此操作:

Sub CopyCellValuesWithIndent()

    Dim rSelection As Range, c As Range
    Dim lIndent As Long, i As Long
    Dim sCopyString As String
    Dim DataObj As Object

    'LATE BIND THE "MSForms.DataObject" LIBRARY TO USE THE CLIPBOARD
    Set DataObj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

    Set rSelection = Selection

    For Each c In rSelection.Cells

        lIndent = c.IndentLevel

        'ADD INDENT
        If lIndent > 0 Then
            For i = 1 To lIndent

                sCopyString = sCopyString & vbTab

            Next i
        End If

        sCopyString = sCopyString & c.Value & vbCrLf

    Next c

    sCopyString = Left(sCopyString, InStrRev(sCopyString, vbCrLf))

    DataObj.SetText sCopyString
    DataObj.PutInClipboard

End Sub

打开 VBA 编辑器 (Alt+F11),创建一个新模块并粘贴上述代码。之后,选择包含要复制的值的单元格(带缩进),运行此宏后,只需使用文本编辑器中的粘贴选项即可保留缩进级别。

答案2

如果您不想使用 VBA,可以尝试这种方法。这是我首选的方法 - 我只是将列宽设置为非常窄(例如 10px)。

嵌套行

您可以关闭网格线,或设置边框以使其看起来更美观。

无网格线的嵌套行

如果您的数据包含数字(就像您的样本数据一样),您需要通过添加'(撇号)来表示文本数据,将它们全部转换为文本 - 否则完整内容将不会出现,您只会得到#

如果你这样做,你会看到这些绿色标签,表示你有一个错误。选择全部,右键单击并选择忽略错误。

忽略错误

当您复制到文本编辑器时,缩进将作为制表符存在。

记事本中的标签

相关内容