加载Excel加载项

时间:2011-01-12 13:15:52

标签: excel autoit

我试过了:

$sAddIn = "H:\prog\essxleqd.xla"
$oExcel = ObjCreate("Excel.Application")
$oExcel.Visible = 1
$oExcel.WorkBooks.Add
$oAddIn = $oExcel.AddIns.Add($sAddIn)
$oAddIn.Installed = True
$oExcel.WorkBooks.Open("H:\Balance_Inquiry.xls")

当我这样做时:

Run('"c:\pathtoexcel\excel.exe" "c:\pathtoaddin\addin.xla"')

它会起作用。但我更喜欢以前的解决方案,因为我需要两个不同的插件。

$sAddIn = "H:\prog\essxleqd.xla"
$oExcel = ObjCreate("Excel.Application")
$oExcel.Visible = 1
$oExcel.WorkBooks.Add
$oAddIn = $oExcel.AddIns.Add($sAddIn)
$oAddIn.Installed = False
$oAddIn.Installed = True
$oExcel.WorkBooks.Open("H:\Balance_Inquiry.xls")

这似乎可以解决问题。第一次安装和工作。之后它没有。即使安装它也不会第二次执行。也许有人可以解释或提供更优雅的解决方案?

1 个答案:

答案 0 :(得分:0)

确实存在奇怪的问题。似乎插件只会在安装时执行操作吗?这不是Excel插件的行为方式,这就是为什么在尝试自动化时会看到奇怪的行为。

如果需要重新安装插件才能工作,那么确实唯一的解决方案是重新安装插件。

$oAddIn.Installed = False
$oAddIn.Installed = True

如果这是您或您自己企业中的某人编写的插件,那么您可能希望在插件本身中识别问题。我可以向你保证,正常的操作方式效果很好。 :))

作为奖励提示,您可能希望这样做:

$oAddIn = $oExcel.AddIns.Add($sAddIn, True)

如果有必要,它会将文件复制到适当的位置,否则它将保持不变。