访问comboboxListIndex,运行时错误'438',xls vs xlsm?

我有一个代码,从一个Excel表中取得值,并把它们放在另一个表中的同一个地方。 这包括combobox索引以及单元格值。 这两个电子表格具有相同的结构和相同的表单元素,但是一张表具有不同的图像作为标题。

这是错误的线:

Workbooks(Template).Sheets(Sheet1).ComboBox12.ListIndex = Workbooks(OriginalFile).Sheets(Sheet1).ComboBox12.ListIndex 

TemplateOrignalFile是文件名, Sheet1是工作表选项卡的名称, ComboBox12在两个文件中都以“ ComboBox12 ”的forms存在。

所以这是问题。 当我运行第一次打开这两个文件的脚本,然后运行一堆这些命令时,它会出错

  "Run-time error '438' Object doesn't support this property of method". 

但是,如果我运行的代码行,而这两个文件已经打开,它运行得很好。

为了使事情更有趣,在97-2003 .xls文件上运行代码完美地工作。 而且它似乎没有什么区别模板文件的版本。 只有当原始文件是.xlsm版本时,代码才会出错。 (从VBA窗口打开后,我仍然可以运行)

为了certificate这是导致行为改变的文件版本,我使用了一个.xls文件,代码可以正常工作,并将其保存为.xlsm,然后用新文件名重新运行代码,并将其错误地删除。

有任何想法吗?

在Excel中打开.xlsm文件后,是否发生了这种情况:我的vbamacros丢失了?

我感谢任何帮助!

通过OLEObjects集合引用控件:

 Workbooks(Template).Sheets(Sheet1).OLEObjects("ComboBox12").Object.ListIndex = Workbooks(OriginalFile).Sheets(Sheet1).OLEObjects("ComboBox12").Object.ListIndex