KB0156:我无法将数据粘贴到 thinkcell 数据表中,或格式丢失

问题

当您在 Excel 工作簿 (.xlsx) 中复制数据并将数据粘贴到 thinkcell 元素的数据表中时,会遇到以下问题之一:

  • 您收到一条消息:Microsoft Excel cannot paste the data。
  • 只粘贴了空单元格。
  • 日期或数字格式丢失——例如,1/1/2012 变为 40909,或 $3.5 变为 3.5。
  • 粘贴后,百分比值显示不正确。在 100% 图表中,图表布局可能会改变。
  • 虽然您选择了 Use Datasheet Fill on Top,但单元格颜色未显示在元素中。

使用 thinkcell 的 Excel 数据链接时,也可能出现这些问题。

解决方案

如果 .xlsx 工作簿包含超过约 65,490 个单元格样式,则可能出现上述任何问题。要检查单元格样式数量,请在 VBA 编辑器的 Immediate 窗口中使用命令 print Activeworkbook.Styles.Count。 阅读更多

  1. 打开 VBA 编辑器(Alt+F11)。
  1. 如果看不到 Immediate 窗口,请选择 View > Immediate Window。
  2. 在 Immediate 窗口中,输入 print Activeworkbook.Styles.Count,然后选择 Enter。

要清理受影响工作簿中的单元格样式数量,请尝试以下任一方法:

  • 将工作表复制到新工作簿中。 阅读更多

    在 Excel 2013 及更高版本中,您可以将受影响的工作表复制到新工作簿中,以防止未使用的单元格样式累积。

    1. 选择工作簿中的所有工作表:选择第一张工作表,按住 Shift,然后选择最后一张工作表。
    2. 右键单击所选内容,然后选择 Move or Copy。
    3. 在 Move or Copy 对话框中,在 To book 下拉菜单上,选择 (new book)。
    4. 选择 Create a copy,然后选择 OK。
    5. 用新名称保存新工作簿。
  • 使用 XLStyles Tool 清理工作簿。 阅读更多
    1. 打开 XLStyles Tool。
    2. 选择 Get File。
    3. 选择所需文件,然后选择 Scan Selected File。
    4. 在 Used Styles 中,选择 Force all Styles to "Normal"。
    5. 选择 Process File。
  • 使用 VBA 宏从工作簿中删除自定义单元格样式。 阅读更多

    使用 DeleteCustomStyles() 宏从工作簿中删除所有自定义单元格样式。

    1. 打开 VBA 编辑器(Alt+F11)。
    2. 选择您的工作簿,然后选择 Insert > Module。
    3. 输入以下宏,然后运行它(F5)。
    Sub DeleteCustomStyles()
    Dim st As Style
    Dim i, i_cust As Long
    i_cust = 0
    For i = (ActiveWorkbook.Styles.Count) To 1 Step -1
    	With ActiveWorkbook.Styles(i)
    		If .BuiltIn = False Then
    			On Error Resume Next
    			.Locked = False
    			On Error GoTo 0
    			If Not .Locked Then
    				.Delete
    				i_cust = i_cust + 1
    			End If
    		End If
    	End With
    	If (i Mod 100) = 0 Then Debug.Print i
    Next
    MsgBox "Styles deleted: " & i_cust & " styles" & Chr(13) & "Styles left: " & ActiveWorkbook.Styles.Count
    End Sub

最佳解决方案是防止用户将未使用的单元格样式粘贴到其他工作簿中,但这需要 Microsoft 修复 Excel 2007 及更高版本中的一个错误。到目前为止,Microsoft 认为其业务影响尚不足以提供此修复。如果您的公司拥有 Microsoft Office 支持合同,并希望向 Microsoft 请求修复,可以引用 Microsoft 案例编号 113012810172527 和 114021711190574 (Excel 2013)。

说明

当您复制并粘贴 Excel 数据,或通过 Excel 数据链接传输数据时,数据会以 BIFF12/.xlsb 格式存储。此文件格式支持约 65,490 种单元格样式。如果您从单元格样式数量超过该格式支持上限的 .xlsx 工作簿复制数据,可能无法将数据粘贴到 thinkcell 数据表中,或者粘贴后的数据会丢失格式信息。 阅读更多

以下因素可能导致 Excel 工作簿中的单元格样式数量超过 BIFF12/.xlsb 格式支持的上限:

  • 由于 Excel 中的错误和有问题的代码设计,一些 .xlsx 工作簿包含数以万计的单元格样式。
  • 一些报表工具会生成超过必要数量的单元格样式。
  • 如果您将一个或多个单元格复制到单独 Excel 实例中的另一个工作簿,或复制到 thinkcell 数据表,所有未使用的单元格样式也会一并复制到该工作簿或数据表中。 阅读更多

    未使用的单元格样式总是会被复制到 thinkcell 数据表中,因为数据表基于单独 Excel 实例中的 Excel 工作表。

    要在 Excel 2013 及更高版本中启动单独的 Excel 实例,请按以下步骤操作: 阅读更多

    1. 打开一个 Excel 工作簿。
    2. 按住 Alt,并右键单击 Windows 任务栏上的 Excel 图标。在菜单中,选择 Excel。
    3. 继续按住 Alt,直到系统询问是否要启动新的 Excel 实例。选择 Yes。

如果您在同一个 Excel 实例内将一个或多个单元格复制到另一个工作簿,未使用的单元格样式不会复制到另一个工作簿中。