Dzwebs.Net

撰写电脑技术杂文十余年

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

Admin | 2012-12-5 8:12:36 | 被阅次数 | 8155

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  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


该杂文来自: Excel杂文

上一篇:vba PivotFields方法使用介绍

下一篇:Excel如何删除已加载的宏

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计