![将内容复制到文本编辑器时保留 Excel 格式](https://linux22.com/image/1358466/%E5%B0%86%E5%86%85%E5%AE%B9%E5%A4%8D%E5%88%B6%E5%88%B0%E6%96%87%E6%9C%AC%E7%BC%96%E8%BE%91%E5%99%A8%E6%97%B6%E4%BF%9D%E7%95%99%20Excel%20%E6%A0%BC%E5%BC%8F.png)
我有一个 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)。
您可以关闭网格线,或设置边框以使其看起来更美观。
如果您的数据包含数字(就像您的样本数据一样),您需要通过添加'
(撇号)来表示文本数据,将它们全部转换为文本 - 否则完整内容将不会出现,您只会得到#
。
如果你这样做,你会看到这些绿色标签,表示你有一个错误。选择全部,右键单击并选择忽略错误。
当您复制到文本编辑器时,缩进将作为制表符存在。