6

我在这个项目上工作了很长时间,每当我关闭我的 Excel 文件时,我都会突然收到一个新错误。我收到两次错误“图片太大,将被截断”。我的文件中没有图片。我正在粘贴格式。

这似乎是 Excel“未解之谜”之一。

我在 Windows 7 上使用 MS Office Professional Plus 2010。

我对此进行了研究并尝试了以下方法:

  1. 已删除所有 %temp% 个文件
  2. 冉CCleaner
  3. 在所有特殊粘贴(格式)之后设置 CutCopyMode = False
  4. 去添加/删除程序并重新配置 Office 以阻止剪辑管理器运行。(控制面板\程序\程序和功能 -> MS Office Professional Plus 2010 -> 更改 -> 添加或删除功能 -> Office 共享功能 -> 剪辑管理器 -> 不可用等)
  5. 重新启动

这些都没有帮助,所以我通过注释掉函数和子例程调用、运行程序、保存然后按“x”关闭来缩小问题的根源。我这样做直到找到合适的潜艇。然后我注释掉 sub 的所有行,并一次将它们添加回一个逻辑块,直到找到问题区域。这里是:

' *********** APPLY BASIC ROW FORMATTING FROM TEMPLATE ***********
' Copy basic row formatting from template and paste over all rows
wksTemplate.Rows(giHEADER_ROW + 1).Copy
myWS.Rows(lFirstRow & ":" & lLastRow).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

粘贴仅包含格式 - 颜色、边框、数字格式、换行等。它可能平均粘贴在 200 行的范围内。我已经好几个月没有更改这 3 行代码了。为什么现在?

有没有人解开这个谜团?

谢谢,莎丽

4

3 回答 3

2

复制范围然后使用一组 pastespecial 调用后出现此错误:

    .PasteSpecial xlPasteColumnWidths
    .PasteSpecial xlPasteValuesAndNumberFormats
    .PasteSpecial xlPasteFormats

解决方案是复制一个空单元格并将特殊的 xlvalues 粘贴回自身:

' to avoid the message on closing the book - "picture is too large and will be truncated", copy and paste a singe empty cell
ThisWorkbook.Worksheets(1).Cells(1, 1).Copy
ThisWorkbook.Worksheets(1).Cells(1, 1).PasteSpecial xlValues

' clear clipboard
Application.CutCopyMode = False
于 2014-05-14T03:11:11.910 回答
0

我有时会遇到和你一样的问题,但我的文件中有很多图片......有时我会放慢速度(打开/关闭或只是标准计算(菜单弹出......))。通常当我关闭工作簿并重新打开它时,它会再次正常工作。

我可能有一些答案,不确定是否有帮助:你使用全局变量吗?

例如,在模块 1 中:

Option Explicit

Public BigObject as AnyBigSizeType

Sub xxx() 'code following

尽量避免使用全局变量,通常它是一团糟,甚至没有用。

另外,为了安全起见,请在即时窗口中尝试: activesheet.pictures.delete (甚至是 activesheet.shapes.delete ,但这个也会删除评论和其他东西......)

于 2014-02-19T13:27:58.490 回答
0

在宏使用命令后关闭文件时出现错误Range.Copy,即使剪贴板为空。这样做Application.CutCopyMode = False是不够的,但是在使用该Range.Copy方法的宏末尾添加这个似乎是解决方案:

这是我的解决方案:

  'without this it will say "The image will be truncated because it's too large", because Excel is stupid
  [A1].Copy
  Application.CutCopyMode = False
于 2022-01-07T22:07:05.607 回答