Excel VBA - 应用程序运行

问题描述 投票:0回答:1

下面的代码有效

Sub RunMacrosInWorkbook2()

Dim aRng As String, Sname1 As String

'Cell A1 contains the name of the Workbook 2 to open
Sname1 = Sheets("SelectPick3Games").Range("Q30").Value


'Open Workbook 2
Workbooks.Open (Sname1)

Sheets("Dashboard").Select

'run 1st macro in workbook 2
Application.Run "NewJersey.xlsm!ClearPreviousResults1"

'run 2nd macro in workbook 2
Application.Run "NewJersey.xlsm!CopyStringsData1"

'Save and Close Workbook 2
ActiveWorkbook.Close True


Windows("Pick3Stats.xlsm").Activate
Sheets("SelectPick3Games").Select
Range("Q28").Select

End Sub

如果我用 Sname1 替换 NewJersey.xlsm,如何获得以下代码行 例如下面的代码不起作用

'运行工作簿 2 中的第一个宏 应用程序.运行“Sname1!ClearPreviousResults1”

'运行工作簿 2 中的第二个宏 应用程序.运行“Sname1!CopyStringsData1”

Sname1 是单元格 Q30 中的工作簿名称 单元格 Q30 = NewJersey.xlsm

我在 Application.Run 中尝试了不同的变体,但没有成功。

Q30 单元格总共使用了 42 个工作簿

提前谢谢您!!

我尝试了不同的代码变体,但不断收到相同的错误。 将在第二个工作簿中运行代码的 Application.Run 的正确语法。

excel
1个回答
0
投票

通常,您可以从变量和文字文本构建(连接)所需的字符串。换句话说,您不能只将 sname1 放入字符串中,如

"abcSNAME1def"
所示,它必须是从变量创建的字符串:
"abc" & SNAME1 & "def"

所以在你的情况下,这是固定的代码:

Dim command as string 
command = sname1 & "!ClearPreviousResults1"
Application.Run command
© www.soinside.com 2019 - 2024. All rights reserved.