打开复制的工作簿时出现Excel运行时错误

时间:2015-06-25 16:42:08

标签: excel-vba vba excel

我打开了工作簿,并通过“另存为”选项进行复制。当我打开保存的工作簿时,它会抛出错误

  

Excel选择工作表类的方法失败

并且代码为:

Sheets(sh_03).Select 

如果我将Select替换为Activate,那么它可以正常工作,但我不知道为什么。 “变量宣言”中也宣布了sh_03。对于我在Bex工具Addins of SAP中运行的大多数已保存的工作簿,都会出现此错误。

Pivot表刷新的其他相同问题,其中错误为

  

未设置对象变量或块变量

和代码为:

For Each wks In ActiveWorkbook.Worksheets

如果我将Active替换为This,那么它会再次起作用,但我不知道其影响。

如果有任何帮助我将非常感谢,请告诉我。

谢谢, 苛刻

1 个答案:

答案 0 :(得分:0)

长答案

ActiveWorkbook是当前处于活动状态的工作簿。它是相对的,应该不应该使用,因为你不能总是确定它将指向你想要的工作簿,除非你明确激活你想要编写代码的工作簿之前的一行或两行。鉴于此,切换到ThisWorkbook,这是代码所在的工作簿,是一个更安全的赌注。你应该感到很自在地做出改变。

至于第一个错误,因为您的ActiveWorkbookThisWorkbook不同(因为第二个错误),那么我们知道我们想要的工作簿此刻不活跃。如果您尝试SELECT工作簿中不在ActiveWorkbook中的工作表,则可能会出现此错误。将该代码更改为.Activate会更安全,因为.Activate会自动将Activeworkbook切换为ThisWorkbook并将.Select切换为工作表。

简短回答

随意更换这两个解决方案,因为它们是当前代码的更好解决方案,因为(正如您所发现的)当前代码在某些情况下容易出错,例如ActiveWorkbook不是{{ 1}}。

相关问题