【发布时间】:2017-10-05 01:30:39
【问题描述】:
因此,我对此进行了大量研究,但我的代码仍然无法正常工作。根据标题,问题是这样的:
我从网站上提取了一份数据报告,该报告以 .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:\,但是由于机密性,我不确定我可以发布多少信息。 请询问您可能有的任何澄清或问题。我被卡住了一段时间,不确定我做错了什么。提前致谢!
【问题讨论】:
-
这似乎是一个将其保存为附加组件(XLAM 格式)的好机会 - 然后您可以在任何打开的工作簿上使用它。
-
我尝试将原始代码另存为 .xlam,但还是不行
-
宏在哪个代码模块中?它是在普通代码模块中还是在工作表的代码模块中? “Sheet4”是工作表的
CodeName,而“TEST MACRO”是工作表的Name,还是“Sheet4(TEST MACRO)”是工作表的Name?如果“Sheet4 (TEST MACRO)”是Name,并且宏在该工作表的代码模块中,那么该工作表的CodeName是什么? -
还要去掉
Dim ws As Worksheet,中的逗号(我知道你原来的问题是Dim ws As Worksheet, Dim wb As Workbook一行,但这也是无效的语法。) -
IF 宏在工作表的代码模块中,并且工作表的
CodeName是Sheet4,那么Application.Run "'incident_extended_report1.xlsm'!Sheet4.ADDHMKRFID"将起作用。如果宏在标准代码模块中,Application.Run "'incident_extended_report1.xlsm'!ADDHMKRFID"将起作用。 (在所有情况下,确保宏声明为Public,即Public Sub ADDHMKRFID())