如何从共享网络中的另一个工作簿中运行宏



所以,我已经对此进行了大量研究,而我的代码仍无法正常工作。根据标题,问题是:

我将数据报告从网站上取下,该报告被下载为.xlsx文件。我在功能区创建了一个宏,所以当我单击它时,它将打开另一个工作簿并运行该宏。我使用的代码如下:

    Option Explicit
    Sub NotHardAtAll()
    Dim ws As Worksheet,
    Dim wb As Workbook
    Set wb = ActiveWorkbook
    Set ws = ActiveSheet

    Workbooks.Open Filename:="C:Usersa0c27nDesktopProjectsincident_extended_report1.xlsm"
    'With Sheets("Sheet4").Activate  '*Not sure if this is enter code here 
     necessary...at all*
    Application.Run "!ADDHMKRFID"
    'End With
End Sub

我已经尝试在宏(即Application.Run"'incident_extended_report1.xlsm!ADDHMKRFID")之前将路径放在

我知道,至少构成了我所做的研究,我应该只使用'application.run'方法,但是我无法访问它正确的表。

当我运行宏时,它会拉出运行时错误'1004'错误,a'400',或者最大的拉动是:"无法运行宏'!addhmkrfid'。宏可能无法使用在本工作簿或所有宏中可能是禁用的。"

我想从下面摘下宏的文件:

工作簿名称: indist_extended_report1.xlsm

工作表名称: Sheep4(测试宏)

宏名称: sub addhmkrfid()结束子

我了解C:不是共享网络,我将要锻炼的网络将是S:,但是我不确定由于机密性而可以发布多少信息。请要求您可能有任何澄清或问题。我被困了一点,不确定我在做什么错。预先感谢!

您需要传递到应用程序的字符串取决于包含宏的工作簿是否处于活动状态,如果不是,则含有宏观的工作簿的文件名(即:workbook.name属性中的内容)。

如果应该在数据报告工作簿处于活动状态时运行宏,则需要:

dim wb_data as Workbook: set wb_data = ActiveWorkbook
dim ws_data as Worksheet: set ws_data = ActiveSheet
dim wb_macro as Workbook
set wb_macro = Workbooks.Open(Filename:="C:Usersa0c27nDesktopProjectsincident_extended_report1.xlsm")
ws_data.Activate
Application.Run wb_macro.Name & "!ADDHMKRFID"

这将保证提供正确的字符串,即使您更改了宏文件的名称。

否则,如果宏工作簿应该处于活动状态,请跳过激活数据工作表,因为默认情况下,最后一个打开的工作簿将处于活动状态,然后将" Addhmkrfid"用作字符串。请注意"!"不见了。仅当您在另一个工作簿中指定宏时,才需要。这是参考其他工作表中数据时使用的符号。

首先,我解决了自己的问题。但是,如果有人可以向我解释为什么它以它的方式奏效,我会很感激。

我在共享网络上保存了原始宏,但是我必须将其保存为模块(在这种情况下为Module1)。我还将第二个宏(运行原始宏)保存在不同的工作簿中(尽管没关系,只要它不是.xlsx文件)。

我写的代码是:

Sub Test()  'Name doesn't matter
Application.Run "'S:xxxxxxxxxxxxincident_extended_report.xlsm'!module1.ADDHMKRFID"
End Sub

然后,我将此宏保存到了功能区,因此我可以在数据replot.xlsx文件上运行它。现在,每当我想运行原始宏时,我只需单击测试宏即可运行另一个!

我猜想如果要关闭打开的其他工作簿,只需添加

 Workbooks (“S:xxxxxxxxxxxxincident_extended_report.xlsm").Close Savechanges:=False 

祝你好运!

相关内容

  • 没有找到相关文章

最新更新