Excel 公式中的变量工作簿名称

Excel 公式中的变量工作簿名称,excel,vba,Excel,Vba,我正在尝试编写一个代码,该代码采用前面声明的变量工作簿名称,并将其输入到将粘贴到单元格中的公式中 如果我只是在其中编写工作簿,那么公式就可以工作了,并且工作簿路径的变量声明也可以工作,好吧,我就是搞不清楚将变量放入公式代码中的格式 '''Spreadsheet opening and variable declaration strFileToOpen = Application.GetOpenFilename _ (Title:="Select an updated Inventory Re

我正在尝试编写一个代码,该代码采用前面声明的变量工作簿名称,并将其输入到将粘贴到单元格中的公式中

如果我只是在其中编写工作簿,那么公式就可以工作了,并且工作簿路径的变量声明也可以工作,好吧,我就是搞不清楚将变量放入公式代码中的格式

'''Spreadsheet opening and variable declaration

strFileToOpen = Application.GetOpenFilename _
(Title:="Select an updated Inventory Report", _
FileFilter:="Excel Files *.xls* (*.xls*),")

If strFileToOpen = False Then

    'Displaying a message if file not choosedn in the above step
    MsgBox "No file selected.", vbExclamation, "Sorry!"

    'And existing from the procedure
    Exit Sub
Else

End If

Workbooks.Open Filename:=strFileToOpen



Set InvRpt = ActiveWorkbook

InvRptName = ActiveWorkbook.FullName

Set InvSht = InvRpt.Worksheets("ALL")

'''Formula insert

ActiveCell.Formula = "=IF(ISERROR(GETPIVOTDATA(""Sec QTY Sum"", 'InvRptName'!$A$4,""Alias"",""" & y & """)),0,GETPIVOTDATA(""Sec QTY Sum"", 'InvRptName'!$A$4,""Alias"",""" & y & """))"
最终结果是此代码的工作方式与此完全相同,但使用变量而不是工作簿/工作表名称:

 ActiveCell.Formula = "=IF(ISERROR(GETPIVOTDATA(""Sec QTY Sum"", '[8-14-19 AM INVENTORY.xls]Sheet2'!$A$4,""Alias"",""" & y & """)),0,GETPIVOTDATA(""Sec QTY Sum"", '[8-14-19 AM INVENTORY.xls]Sheet2'!$A$4,""Alias"",""" & y & """))"

在有问题的行中放置一个断点,然后使用中间窗口找出哪里出了问题,这总是有帮助的。比如,

在有ActiveCell.Formula的最后一行放置一个断点= 运行代码 在中间窗口中,类型?=IFISERRORGETPIVOTDATASec数量总和'InvRptName'$$4,别名,&y&,0,GETPIVOTDATASec数量总和,'InvRptName'$A$4,别名,&y& 笔记这个指示中间窗口要查看返回值。 如果编译正常,您应该看到一个结果字符串,看看它是否像您期望的那样。我猜您的结果将包括文本“InvRptName”,其中您期望的是“[8-14-19 AM INVENTORY.xls]Sheet2”。 获取“[8-14-19 AM INVENTORY.xls]Sheet2”$4美元的试用费

?"'[" & ActiveWorkbook.Name & "]" & ActiveSheet.Name & "'!$A$4"
另外两个热提示

使用Debug.Print在此处添加消息或在代码中添加变量&InvRptName以输出调试消息。 在执行InvRptName='[&ActiveWorkbook.Name&]&ActiveSheet.Name&'期间,使用中间窗口修复变量$一张4美元的通知我不包括这个?这一次。
可能的副本谢谢!将其分离为工作簿名称和活动工作表名称以获得正确的格式正是我所需要的。