大众计算机学习网欢迎诸位!收藏本站注 册登 陆
常用教程:基础知识网络知识操作系统WPS网页制作数据库算法网页成功之路网络安全最新技术古典mid流行midmid背景下载中心
您现在的位置:首页 > 教程 > 文章页

不打开工作薄如何运行里面的宏

Admin | 2012-12-5 8:12:36 | ReadNums | 3088 | 标签 Excel教程 | 打印本页
     

  Excel功能虽强大,但是还存在不能满足我们日常工作的情况,这个时候,很多人选择了宏,通过自己写的宏代码,来实现部分特殊的功能。

  然而,很多时候,宏代码只会随着工作薄的打开才能使用,否则将无法使用,比如A工作薄里面的宏,只能在A工作薄中使用,不能在其它工作薄来使用,也就是说,跨表调用宏很难实现。

  下面,本文针对这样的问题,来给你介绍些方法,让你能够在不打开工作薄就能运行里面的宏,达到工作薄之间调用宏的效果。

  假设有两个工作薄,其名称分别为:MyRun1.xls和MyRun2.xls

  其中,在MyRun1.xls工作薄里面,有一个宏,其名称为:MyTest1

  注意哦,MyTest1这个宏是MyRun1.xls这个工作薄里面的。

  现在,我们要做的是,在MyRun2.xls中,要直接调用MyRun1.xls里面的MyTest1。

  方法有两种,估计你会用得上:

  方法一:

  在MyRun2.xls的VBA代码中,使用如下的这行代码

  Application.Run "'MyRun1.xls'!MyTest1"

  这样,你就能在MyRun2.xls调用MyRun1.xls里面的MyTest1

  注意,这种方法的缺点就是,你必须先打开MyRun1.xls,这样,在MyRun2.xls中才能调用MyRun1.xls里面的MyTest1,否则将报错。调用的和被调用的工作薄,都必须要打开,否则就失败。

  方法二:

  使用方法2呢,就灵活多了,无论被调用的工作薄是否打开,都能正常调用里面的宏。代码如下:

  Dim MyRunD
  MyRunD = Application.Run("'" & ThisWorkbook.Path & "\MyRun1.xls'!MyTest1")
  Debug.Print MyRunD

  你可得记好了,此方法管用多了。上面的方法的缺点的,万一有宏的工作薄名称修改了,你又得修改代码了,要想解决工作薄名称发生改变仍然能正常调用宏,那么,你可以参考下面的代码。

  Sub Main()

      Call testRun("MyRun2") 'testRun("MyRun1")

  End Sub

  Sub testRun(ByRef strTest As String)

   Application.Run strTest

  End Sub

  Sub MyRun1()

   MsgBox "dzwebs"

  End Sub

  Sub MyRun2()

   MsgBox "dz37w"

  End Sub


问题未解决:在线咨询我要在线咨询问题

网友评论

(访客)
内容实用原创,讲得很好。
20xx年x月x日
(站长)
有问题请在线咨询。
20xx年x月x日