Application.Run - 来自单元格参考的工作簿名称 - VBA

时间:2016-09-15 18:53:29

标签: excel vba reference cell

我是业余的VBA用户,到目前为止尝试使用各种教程和反复试验。

目前我遇到了Application.Run的障碍。我的宏正在工作,我只需要根据包含特定日期的单元格引用更新工作簿的名称(日期)。

作为较长宏的一部分,根据我工作的工作簿,我可能会有下面的一个:

   Application.Run ("'09. September - Monthly Reconciliation.xlsm'!CombineTabs")
 or
   Application.Run ("'03.09.2016 - Daily Reconciliation.xlsm'!CombineTabs")

为了防止必须每天或每月更新宏(它将被没有任何VBA知识的人使用),有没有办法可以将工作簿的名称链接到单元格?此单元格将包含工作簿的名称,并具有所需的日期和日期格式。

任何意见,

1 个答案:

答案 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