Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1849|回复: 8

[已解决]录制宏后烦恼

[复制链接]
发表于 2013-3-12 15:22 | 显示全部楼层 |阅读模式
当我在一个工作薄中录制了指定的宏后,因为工作需要我更改了工作簿的名字,结果宏就失效了。
请帮助下如何解决为好呢。更改工作簿名称是必须的(工作需要)
最佳答案
2013-3-12 17:14
Sub 财务()
    Application.Run "'生产项目进度表.xls'!全部"
    ActiveWindow.SmallScroll Down:=-51
    Selection.Sort Key1:=Range("K6"), Order1:=xlAscending, Key2:=Range("D6") _
        , Order2:=xlAscending, Key3:=Range("B6"), Order3:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _
        xlSortNormal, DataOption3:=xlSortNormal
    ActiveWindow.SmallScroll Down:=-72
End Sub



如果你只改了工作簿名,导致出错。那么,录制宏中和工作簿名有关的,就只有第1句的蓝色部分了。
"'生产项目进度表.xls'!全部",是一个字符串,可看做死板的,不灵活的表达方式。特别是在需要修改工作簿名的情况时,无法跟着“自动”变更。解决办法是修改第一句,

Application.Run thisworkbook.name & "!全部"

如2楼所说,acitveworkbook和thisworkbook 都可能是 当前工作簿,所以用它们替代录制宏中 关于工作簿名的字符串中那蓝色部分。


excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-3-12 15:28 | 显示全部楼层
为什么会失效,如果只是因为工作簿名称导致打开工作簿时失效,那么用ACTIVEWORKBOOK,或THISWORKBOOK,如果宏代码保存的工作簿换了,那么用插件就可以
回复

使用道具 举报

 楼主| 发表于 2013-3-12 15:32 | 显示全部楼层
因为宏里面使用了我原来的工作簿名称啊


QQ截图20130312153141.png
回复

使用道具 举报

 楼主| 发表于 2013-3-12 15:41 | 显示全部楼层
那么用ACTIVEWORKBOOK,或THISWORKBOOK
这两个我不会用啊?
这段代码如何更改呢?
Sub 财务()
'
' 财务 Macro
' 宏由 微软用户 录制,时间: 2013-2-28
'

'
    Application.Run "'生产项目进度表.xls'!全部"
    ActiveWindow.SmallScroll Down:=-51
    Selection.Sort Key1:=Range("K6"), Order1:=xlAscending, Key2:=Range("D6") _
        , Order2:=xlAscending, Key3:=Range("B6"), Order3:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _
        xlSortNormal, DataOption3:=xlSortNormal
    ActiveWindow.SmallScroll Down:=-72
End Sub
回复

使用道具 举报

 楼主| 发表于 2013-3-12 15:44 | 显示全部楼层
这代码里面的'生产项目进度表'就是工作簿的名称,更改后,所以代码就找不到了。这个问题要如何避免呢。
QQ截图20130312154211.png
回复

使用道具 举报

 楼主| 发表于 2013-3-12 16:21 | 显示全部楼层
没有人知道吗。好可怜啊
回复

使用道具 举报

发表于 2013-3-12 17:14 | 显示全部楼层    本楼为最佳答案   
Sub 财务()
    Application.Run "'生产项目进度表.xls'!全部"
    ActiveWindow.SmallScroll Down:=-51
    Selection.Sort Key1:=Range("K6"), Order1:=xlAscending, Key2:=Range("D6") _
        , Order2:=xlAscending, Key3:=Range("B6"), Order3:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _
        xlSortNormal, DataOption3:=xlSortNormal
    ActiveWindow.SmallScroll Down:=-72
End Sub



如果你只改了工作簿名,导致出错。那么,录制宏中和工作簿名有关的,就只有第1句的蓝色部分了。
"'生产项目进度表.xls'!全部",是一个字符串,可看做死板的,不灵活的表达方式。特别是在需要修改工作簿名的情况时,无法跟着“自动”变更。解决办法是修改第一句,

Application.Run thisworkbook.name & "!全部"

如2楼所说,acitveworkbook和thisworkbook 都可能是 当前工作簿,所以用它们替代录制宏中 关于工作簿名的字符串中那蓝色部分。


回复

使用道具 举报

发表于 2013-3-12 17:16 | 显示全部楼层
没测试,不知道对不对
回复

使用道具 举报

 楼主| 发表于 2013-3-16 14:08 | 显示全部楼层
感谢二楼“cbg2008”的回答,只怪小弟头一次接触这个。所以哥哥的解答我没有看明白,
现在才明白。十分感谢。。。。。
感谢以上所有参与的哥哥姐姐。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 23:03 , Processed in 0.311941 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表