找回密码
 加入
搜索
查看: 4268|回复: 6

[AU3基础] ExcelBookAttach出错 【已解决】

  [复制链接]
发表于 2012-10-7 11:57:01 | 显示全部楼层 |阅读模式
本帖最后由 lwz642246 于 2012-10-9 17:19 编辑

#include <Excel.au3>
$oExcel = _ExcelBookAttach("Microsoft Excel - 我的工作表", "Title")
$oExcel.worksheets(1).Cells(1, 1).Value = "123"
sleep(5000)

_ExcelBookSave($oExcel)


_ExcelBookAttach能正常附加到工作表,手工保存正常,但_ExcelBookSave保存则excel出错崩溃。

显示
>运行:(3.3.6.1):D:\Program Files\autoit3\autoit3.exe "D:\我的文档\桌面\1.au3"   
D:\????\??\1.au3 (3) : ==> ???????????("Object").:
$oExcel.worksheets(1).Cells(1, 1).Value = "123"
$oExcel^ ERROR
->19:46:28 AutoIT3.exe 完成

谢谢,xiehuahere 。已解决
#include <Excel.au3>
If Not WinExists("Microsoft Excel - 我的工作表.xls") Then $oExcel=_ExcelBookOpen(@ScriptDir & '\我的工作表.xls')
$oExcel = _ExcelBookAttach(@ScriptDir & '\我的工作表.xls')
$oExcel.Application.worksheets(1).Cells(1, 1).Value = "123"
$oExcel.Application.DisplayAlerts = 0  ;禁用Excel警告消息
$oExcel.Application.save
发表于 2012-10-7 14:50:26 | 显示全部楼层
你还是贴一下完整的代码和文件吧
 楼主| 发表于 2012-10-7 19:58:56 | 显示全部楼层
回复 2# qinylj

文件就是打开同目录下“我的工作表.xls “   
显示
>运行:(3.3.6.1):D:\Program Files\autoit3\autoit3.exe "D:\我的文档\桌面\1.au3"   
D:\????\??\1.au3 (3) : ==> ???????????("Object").:
$oExcel.worksheets(1).Cells(1, 1).Value = "123"
$oExcel^ ERROR
->19:46:28 AutoIT3.exe 完成:[CODE]:1
发表于 2012-10-7 21:10:53 | 显示全部楼层
AU3在此问题上可能有些小BUG~~

我有了几个版本的测试,相同的代码,相同的文件,测试几次,有时可以成功,有时不能,当可以成功写入时,后面的自动显示成功(代码运行没有报错,返回值为1,按帮助文档说是成功的),但实际并没有成功~~
发表于 2012-10-8 14:58:01 | 显示全部楼层
本帖最后由 xiehuahere 于 2012-10-8 15:01 编辑

回复 1# lwz642246
_ExcelBookAttach 不是这么用的。
用法如下:
Local $oExcel
If WinExists("Excel 窗口标题") Then
        $oExcel = ObjGet("", "Excel.Application") ; Get an existing Excel Object
        If @error Then
                MsgBox(0, "错误!",  "获取对象失败!")
                Exit 1
        EndIf
        _ExcelBookAttach("Excel 窗口标题", "Title")
Else
        $oExcel = _ExcelBookOpen("Excel 文件路径")
        If @error = 1 Then
                MsgBox(0, "错误!", "无法创建对象!")
                Exit 1
        ElseIf @error = 2 Then
                MsgBox(0, "错误!", "文件不存在!")
                Exit 1
        EndIf
EndIf


或者,用你的方法也可以,但attach后的下面一句要改一下:
$oExcel.Application.xxx.xx
 楼主| 发表于 2012-10-8 22:33:00 | 显示全部楼层
回复 5# xiehuahere
谢谢,已解决。
#include <Excel.au3>
If Not WinExists("Microsoft Excel - 我的工作表.xls") Then $oExcel=_ExcelBookOpen(@ScriptDir & '\我的工作表.xls')
$oExcel = _ExcelBookAttach(@ScriptDir & '\我的工作表.xls')
$oExcel.Application.worksheets(1).Cells(1, 1).Value = "123"
$oExcel.Application.DisplayAlerts = 0  ;禁用Excel警告消息
$oExcel.Application.save
发表于 2012-10-9 09:16:59 | 显示全部楼层
本帖最后由 xiehuahere 于 2012-10-9 09:21 编辑

回复 6# lwz642246


总觉得你这个代码还是有点累赘
既然用_ExcelBookOpen,就不需要再_ExcelBookAttach。
不过既然你想转化为工作表对象的对象变量来做,也是可以的。

既然已解决,修改帖子标题加上“已解决”字样吧。这样大家可以把视线挪到那些还有待解决的问题上去。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 23:38 , Processed in 0.091352 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表