gpt4 book ai didi

vba - 如何从共享网络中的不同工作簿运行宏?

转载 作者:行者123 更新时间:2023-12-03 03:27:22 33 4
gpt4 key购买 nike

所以,我对此做了很多研究,但我的代码仍然无法工作。根据标题,问题是这样的:

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

    Option Explicit
Sub NotHardAtAll()

Dim ws As Worksheet,
Dim wb As Workbook

Set wb = ActiveWorkbook

Set ws = ActiveSheet


Workbooks.Open Filename:="C:\Users\a0c27n\Desktop\Projects\incident_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”错误、“400”,或者它最多出现的是:“无法运行宏“!ADDHMKRFID”。该宏可能不可用在此工作簿中,或者所有宏都可能被禁用。”

我尝试从中提取宏的文件如下:

工作簿名称:incident_extended_report1.xlsm

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

宏名称:子 ADDHMKRFID()结束子

我知道 C:\不是共享网络,我将使用的网络是 S:\,但由于保密原因,我不确定我可以发布多少信息。请询问您可能有的任何说明或问题。我被困了一段时间,不确定我做错了什么。提前致谢!

最佳答案

您需要传递给 Application.Run 的字符串取决于包含宏的工作簿是否处于事件状态,如果不是,则包含包含宏的工作簿的文件名(即: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:\Users\a0c27n\Desktop\Projects\incident_extended_report1.xlsm")
ws_data.Activate
Application.Run wb_macro.Name & "!ADDHMKRFID"

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

否则,如果宏工作簿应该处于事件状态,请跳过激活数据工作表,因为默认情况下最后打开的工作簿将处于事件状态,然后使用“ADDHMKRFID”作为字符串。注意“!”不见了。仅当您在另一个工作簿中指定宏时才需要这样做。这与引用其他工作表中的数据时使用的表示法相同。

关于vba - 如何从共享网络中的不同工作簿运行宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46549539/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com