winter1982 发表于 2012-6-8 23:34:09

AU3中怎么取EXCEL2007工作表的CodeName

$objExcelApp=ObjCreate("Excel.Application")
;~        $objExcelApp .visible=True
$objExcelWorkbook=$objExcelApp.Workbooks.Open("D:\ComputerList\1.xlsx")
For $i=1 To $objExcelApp.Activeworkbook.sheets.count
MsgBox(0,"",$objExcelApp.Activeworkbook.Sheets($i).codename)
Next

但如果是显示工作表名字却可以
MsgBox(0,"",$objExcelApp.Activeworkbook.Sheets($i).name)
试过2003工作表的CodeName能取到,但现在取2007的就不行,即使是2007另存为的.xls也读不出来,为什么呢?

308513523 发表于 2012-6-9 09:48:49

{:face (245):}虽然不懂 给你顶

winter1982 发表于 2012-6-11 09:53:00

回复 2# 308513523


    多谢多谢

kevinch 发表于 2012-6-11 10:00:25

07以上版本可以使用codename,但用au3无法取得,确实挺奇怪,敢问楼主意欲何为,看下有没有替代方法,一般用codename都是为了防止工作表名修改

winter1982 发表于 2012-6-11 16:45:49

我是要导入EXCEL的数据到数据库里。现在就是用了SHEETS(1)来做,但这样的话,如果工作表给移位了,那就麻烦了

kevinch 发表于 2012-6-11 17:04:25

那即使用codename也有问题啊,如果存在的话,可以直接用,如果不存在就有问题啦,不能读取也就不能循环各个工作表对比codename,如果文件固定了表名或者有指定的特征的话,倒是也可以解决

winter1982 发表于 2012-6-12 20:01:58

回复 6# kevinch

WORKSHEET的CODENAME和NAME不一样,CODENAME不用代码是该不到的,不想NAME,随便在EXCEL界面下就能改。
如果匹配不到的话,那就关掉那个WORKBOOK,不做任何操作嘛。
现在问题是那个CODENAME连读都读不到哇

kevinch 发表于 2012-6-13 09:11:38

你加个容错直接使用codename就行了,如果出错就处理一下出错的情况
页: [1]
查看完整版本: AU3中怎么取EXCEL2007工作表的CodeName