我是业余的VBA用户,到目前为止尝试使用各种教程和反复试验。
目前我遇到了Application.Run的障碍。我的宏正在工作,我只需要根据包含特定日期的单元格引用更新工作簿的名称(日期)。
作为较长宏的一部分,根据我工作的工作簿,我可能会有下面的一个:
Application.Run ("'09. September - Monthly Reconciliation.xlsm'!CombineTabs")
or
Application.Run ("'03.09.2016 - Daily Reconciliation.xlsm'!CombineTabs")
为了防止必须每天或每月更新宏(它将被没有任何VBA知识的人使用),有没有办法可以将工作簿的名称链接到单元格?此单元格将包含工作簿的名称,并具有所需的日期和日期格式。
任何意见,
答案 0 :(得分:1)
是的,宏与代码
位于同一工作簿中
如果是这种情况并且我理解正确,那么你可以这样做:
Application.Run "CombineTabs"
甚至:
CombineTabs
我尝试了Application.Run工作表(“Sheet19”)。范围(“AQ27”)。值,!CombineTabs - 它只是打开其他工作簿 [...]
如果CombineTabs
宏位于活动工作簿中,不必须是包含调用代码的工作簿,则可以执行以下操作:
Application.Run "'" & ActiveWorkbook.FullName & "'!CombineTabs"
如果CombineTabs
宏位于某些未打开的工作簿中,并且文件名位于包含{{的相同工作簿中1}}指令......
首先,避免硬编码范围和单元格引用;使用工作簿范围Application.Run
命名范围Sheet19!AQ27
- 将其命名为有意义的内容,例如Name
。然后你可以这样做:
Filename
在Application.Run "'" & ThisWorkbook.Range("Filename").Value & "'!CombineTabs"
Module1
此代码位于立即窗格:
Public Sub Test()
Debug.Print "yup"
End Sub
因此,假设Application.Run "'" & Application.Workbooks(1).FullName & "'!Test"
yup
范围包含现有工作簿的有效路径+文件名。
您可以在尝试Filename
调用之前验证这一点,方法是打开目标工作簿:
Application.Run