如何从单词引用Excel工作表的CodeName?

时间:2017-06-27 21:26:33

标签: excel vba word-vba

我想在Word宏中使用Excel工作表的CodeName。但是,在Word中,该属性似乎无法正常工作。

这件作品:

Dim sht As Object
Dim xlsobj_2 As Object
Dim sheetName As String

Set xlsobj_2 = CreateObject("Excel.Application")
xlsobj_2.Application.Visible = True 'I can see it opens as I expected.
Set xlsfile = xlsobj_2.Application.Workbooks.Open(folder & fileName, UpdateLinks:=0) 'You can create your own excel file.
Set sht = xlsfile.Sheets(sheetName)  
MsgBox sht.Name 'This gives me the name of the sheet and I know it is correct.

这就是我想要的东西不起作用:

Dim sht As Object
Dim sheetName As String
Dim sheetName As String

...'Same as above.

MsgBox sht.CodeName

谢谢聪明的人!

1 个答案:

答案 0 :(得分:0)

在创建工作表后第一次进入Visual Basic编辑器时,工作表仅分配了CodeName。 (显然,在完成之后,您需要再次保存工作簿。)

在分配CodeName之前,.CodeName属性将返回一个空字符串。

这种效果常常令人困惑。例如,如果您使用默认的3个空工作表打开一个新工作簿,然后立即在第一个工作表之前插入另一个工作表,然后然后进入VBE,您将拥有

  • 工作表(“Sheet4”)Name "Sheet4"CodeName Sheet1
  • 工作表(“Sheet1”)Name "Sheet1"CodeName Sheet2
  • 工作表(“Sheet2”)Name "Sheet2"CodeName Sheet3
  • 工作表(“Sheet3”)Name "Sheet3"CodeName Sheet4