从另一个VBA项目运行/调用Sub(带输入)

时间:2018-05-05 17:32:13

标签: vba excel-vba call excel

我一直在寻找,但似乎没有什么对我有用。我正在尝试从 Personal.xlsb 文件运行Public Sub,该文件将添加单元格更改为更改的同一行上的单元格时的时间戳。此公共子需要由更改的工作表项目中的Private Sub Worksheet_Change(ByVal Target As Range)触发。

我目前正在尝试Application.Run("'PERSONAL.XLSB'!CaptureTime",Target),但VBA无法识别代码。我还尝试了Call多种形式和其他一些事情。

我不想在同一个表项目上创建模块的原因是因为我的大部分代码都受个人文件保护。 个人文件中的一个macrso正在为我的公司创建一个报告,它还会将VBA代码添加到新的报告表中以获取时间戳并保护其中的大多数单元格(以避免数据)操作)。我想将该代码从 Sheet Project 移动到我的个人文件中,并且只要每次发生工作表发生更改时调用该时间戳代码。这样,访问VBA时,没有人能够在工作表上看到密码。

1 个答案:

答案 0 :(得分:0)

在您的情况下,我会添加对您的personal.xlsb的引用,如同here。 描述是针对AddIn的,但它们是相同的。然后你可以直接打电话给你的

Sub TestIt
    CaptureTime par1, par2, ...  'In case you have parameters par1, par2, .. for the sub
End Sub

如果您不想使用引用,请尝试以下代码

Sub NoReference()

Dim wb As Workbook
Dim Par1
Dim Par2

    Set wb = Workbooks("PERSONAL.XLSB")
    Application.Run "'" & Replace(wb.Name, "'", "''") & "'!NoPar"
    Application.Run "'" & Replace(wb.Name, "'", "''") & "'!PassPar", Par1, Par2

End Sub