在公式

时间:2018-01-12 15:05:23

标签: excel vba

希望有人可以帮助我尝试引用工作表代码而不是工作表名称,因为工作表名称会根据我引用的工作簿而更改。

我目前使用的代码就是这个

'Control Card 3 extracting from a closed workbook in to my active sheet`

Range("C1196:C1219").Formula = "='[ASE Template White Book.xlsx]Cntrl 3'!$C6"
Range("D1196:D1219").Formula = "='[ASE Template White Book.xlsx]Cntrl 3'!$D6"
Range("C1220:C1243").Formula = "='[ASE Template White Book.xlsx]Cntrl 3'!$C38"
Range("D1220:D1243").Formula = "='[ASE Template White Book.xlsx]Cntrl 3'!$D38"

这很好但我正在尝试使用

    'Control Card 3 
Range("C1196:C1219").Formula = "='[ASE Template White Book.xlsx]Sheet (30)'!$C6"

Range("D1196:D1219").Formula = "='[ASE Template White Book.xlsx]Sheet 30'!$D6"

Range("C1220:C1243").Formula = "='[ASE Template White Book.xlsx].Sheet30'!$C38"

我正在尝试将单元格的值提取到我正在处理的工作表中,但正如所提到的,工作表名称将根据已关闭的工作簿而更改,因为原始文档保存为ASE模板白色book.xlsx所以我有代码的常量参考文档。

任何得到帮助的帮助

2 个答案:

答案 0 :(得分:0)

您需要参考工作表的索引来获取其名称,并将其用作公式中的变量,如下所示:

Range("C1196:C1219").Formula = "='[ASE Template White Book.xlsx]" & Worksheets(30).Name & "'!$C6" 

答案 1 :(得分:0)

基于此网站http://www.ozgrid.com/VBA/excel-vba-sheet-names.htm

  

"只有在您引用时才能使用工作表CodeName   与工作簿不同的工作表中的工作表   驻留"

因此,如果您尝试获取已关闭工作簿的sheet codename,则无效。您只能使用包含正在运行的宏的工作簿的sheet codename。您可以引用工作表的唯一方法是通过执行@braX在其示例中显示的内容,方法是获取工作表索引并通过索引引用工作表。