这是我的第一个帖子,我是最近接手这个职位的SysAdmin,之前的那个人已经退休了,我真的不知道怎么联系他,所以我必须自己弄清楚所有的事情。
我遇到的问题如下,在我们的W2K8 R2盒子中有一个计划的任务,这个任务基本上就是调用一个.vbs (脚本)来查询AD,然后将输出放入Excel中并发送电子邮件给一些人,并将excel文件作为附件,我们最近将我们的办公套件从2010 (大约4个月前)升级到了2013年。
我们不知道报告没有发送出去,直到一个经常审查它的人联系我们并要求报告,我想检查计划任务的日志,但它没有记录任何错误,然后在检查脚本的日志时,我注意到执行对ad的查询的例程检索了所有信息并尝试将所有信息放入excel spreedsheet之后,发生了一些事情,它突然停止,只记录了一个错误,请参见下一行:
Microsoft Excel: Sort method of Range class failed
老实说,我认为最近升级到2013确实做了一些事情,这就是为什么没有生成报告,但我想从VB和Excel方面有更多经验的人那里获得另一种意见。
我认为将信息添加到excel的代码片段如下:
'sortthedetailssheet
'
Set objRange=objSheetDetails.columns("A:D").EntireColumn
Set objRange2=objSheetDetails.Range("C1")
Set objRange3=objSheetDetails.Range("A1")
objRange.Sort objRange2, xlAscending, objRange3, , xlDescending, , , xlYes
'
'sorttheMembershipsheet
'
Set objRange=objSheetMembership.columns("A:C").EntireColumn
Set objRange2=objSheetMembership.Range("A1")
Set objRange3=objSheetMembership.Range("B1")
objRange.Sort objRange2, xlAscending, objRange3, , xlAscending, , , xlYes
我非常感谢任何建议,因为我是vba的新手,我认为需要一段时间才能掌握速度。
发布于 2014-08-25 22:38:07
你的潜在问题
经过更多的测试,我想我发现了在您的情况下可能会导致此错误的原因:objSheetDetails
指的是受保护的(密码预先保护?)工作表,所以.sort
实际上不能排序,因为它没有权限。
示例
1./这行得通
Sheets("Feuil3").Protect Password:="pswdtest"
Sheets("Feuil3").Unprotect Password:="pswdtest"
Set objRange = Sheets("Feuil3").Columns("F:H").EntireColumn
Set objRange2 = Sheets("Feuil3").Range("F1")
Set objRange3 = Sheets("Feuil3").Range("G1")
objRange.Sort objRange2, xlAscending, objRange3, , xlAscending, , , xlYes
1./此操作失败
Sheets("Feuil3").Protect Password:="pswdtest"
Set objRange = Sheets("Feuil3").Columns("F:H").EntireColumn
Set objRange2 = Sheets("Feuil3").Range("F1")
Set objRange3 = Sheets("Feuil3").Range("G1")
objRange.Sort objRange2, xlAscending, objRange3, , xlAscending, , , xlYes
Sheets("Feuil3").Unprotect Password:="pswdtest"
解决方案
我假设需要的保护是保留的。(如果没有,只需移除保护,它应该可以工作...)
在排序部分之前添加
.Unprotect
,在排序部分之后添加(XXX.Protect UserInterFaceOnly:=True
)或.Protect
或
UserInterFaceOnly:=True
,以便它将为用户保护工作表,但不会保护代码sethttps://stackoverflow.com/questions/25430938
复制相似问题