Application.Run – 单元格引用的工作簿名称 – VBA
我是一个业余VBA用户,试图通过各种教程和反复试验到目前为止。
目前我遇到了Application.Run的障碍。 我拥有的macros正在工作,我只需要工作簿的名称(date)根据包含特定date的单元格引用进行更新。
作为一个较长的macros的一部分,我可能有以下之一取决于我工作的工作簿:
Application.Run ("'09. September - Monthly Reconciliation.xlsm'!CombineTabs") or Application.Run ("'03.09.2016 - Daily Reconciliation.xlsm'!CombineTabs")
为了防止必须每天或每月更新macros(它将被没有任何VBA知识的人使用 ), 有没有办法可以将工作簿的名称链接到单元格? 该单元格将包含工作簿的名称,具有所需的date和date格式。
任何input赞赏,
是的,这个macros和代码在同一个工作簿里
如果是这样,我理解正确,那么你可以简单地做到这一点:
Application.Run "CombineTabs"
甚至:
CombineTabs
我尝试了Application.Run Worksheets(“Sheet19”)。Range(“AQ27”)。Value,!CombineTabs – 它只是打开另一个工作簿 […]
如果CombineTabs
macros位于活动工作簿 (不一定是包含调用代码的工作簿),则可以这样做:
Application.Run "'" & ActiveWorkbook.FullName & "'!CombineTabs"
如果CombineTabs
macros位于某个未打开的工作簿中,并且该文件名位于包含Application.Run
指令的相同工作簿中…
首先,避免硬编码范围和单元格引用; 命名范围Sheet19!AQ27
带有工作簿范围Name
– 称之为有意义的东西,比如Filename
。 那么你可以这样做:
Application.Run "'" & ThisWorkbook.Range("Filename").Value & "'!CombineTabs"
在Module1
使用此代码进行testing
Public Sub Test() Debug.Print "yup" End Sub
而这个代码在即时窗格中 :
Application.Run "'" & Application.Workbooks(1).FullName & "'!Test" yup
因此,这假定Filename
范围包含一个有效的path+文件名到现有的工作簿。
您可以在尝试Application.Run
调用之前通过自己打开目标工作簿来validation这一点:
Dim target As Workbook On Error Resume Next Set target = Application.Workbooks.Open(ThisWorkbook.Range("Filename").Value) Err.Clear If target Is Nothing Then Exit Sub On Error GoTo 0 Application.Run "'" & target.FullName & "'!CombineTabs"