找回密码
 加入
搜索
查看: 3790|回复: 5

[系统综合] 求助 au3 Excel判断是否存在批注

  [复制链接]
发表于 2013-5-14 22:57:45 | 显示全部楼层 |阅读模式
#include<Excel.au3>
Local $oExcel = ObjCreate("Excel.Application") 
$oExcel.Visible=True
$oExcel.WorkBooks.Add 
$oExcel.Cells(1,1).Value ="A1赋值"
$var1="首次添加批注"
$oExcel.Cells(1,1).AddComment($var1)
;在已有的基础上追加批注可以这样
$var2="再次追加批注"
$var3=String($oExcel.Cells(1,1).Comment.Text&@CRLF&$var2)
$oExcel.Cells(1,1).Comment.Text($var3)

;问题来了,首次添加或者追加批注的时候,我怎么才能判断是否存在批注
;首次添加批注必须是AddComment, 追加批注Comment.Text
;有批注情况下使用AddComment出错退出,没有批注情况下使用Comment.Text也会出错。
发表于 2013-5-15 18:47:26 | 显示全部楼层
答案好像就在你代码里吧?
$oExcel.Visible = True
$oExcel.WorkBooks.Add
$oExcel.Cells(1, 1).Value = "A1赋值"
_add_comment()
MsgBox(0, '备注内容1', $oExcel.Cells(1, 1).Comment.Text)
Sleep(5000)
_add_comment()
MsgBox(0, '备注内容2', $oExcel.Cells(1, 1).Comment.Text)

Func _add_comment()
        If StringLen($oExcel.Cells(1, 1).Comment.Text) = 0 Then
                $var = "首次添加批注"
                $oExcel.Cells(1, 1).AddComment($var)
                ConsoleWrite('1')
        Else
                $var = "再次追加批注"
                $var = $oExcel.Cells(1, 1).Comment.Text & @CRLF & $var
                $oExcel.Cells(1, 1).Comment.Text($var)
                ConsoleWrite('2')
        EndIf
EndFunc 
 楼主| 发表于 2013-5-15 21:31:50 | 显示全部楼层
首先感谢 user3000
If StringLen($oExcel.Cells(1, 1).Comment.Text) = 0 Then
这个我之前也试过了,出错的
在一个没有批注的单元格中执行代码:$oExcel.Cells(1, 1).Comment.Text   程序直接崩溃,退出了。
在有批注的情况下执行这个代码,就没有问题

经过昨天晚上一边睡觉一边想终于想出来了临时的解决方案:

  ;前提是Cells(2, 2)这个单元格没有批注
Func _add_comment()
        If $oExcel.Cells(1, 1).Comment = $oExcel.Cells(2, 2).Comment Then
                $var = "首次添加批注"
                $oExcel.Cells(1, 1).AddComment($var)
                ConsoleWrite('1')
                               
        Else
                $var = "再次追加批注"
                $var = $oExcel.Cells(1, 1).Comment.Text & @CRLF & $var
                $oExcel.Cells(1, 1).Comment.Text($var)
                ConsoleWrite('2')
        EndIf
EndFunc
发表于 2013-5-15 21:44:54 | 显示全部楼层
回复 3# 495910670


    我给出的代码,第一次运行 _add_comment() 时是没有批注的. 没有发现报错程序崩溃的情况.
环境:  64位 WIN7 + OFFICE2010
 楼主| 发表于 2013-5-16 22:09:23 | 显示全部楼层
我的系统是win8 64 + office20100
发表于 2013-6-3 22:13:16 | 显示全部楼层
$excel=ObjCreate("excel.application")
$excel.visible=True
$wb=$excel.workbooks.add
With $wb.worksheets(1).range("a1")
        If IsObj(.comment) Then
                MsgBox(0,"","有批注")
        Else
                MsgBox(0,"","无批注")
        EndIf
        .addcomment("test")
        If IsObj(.comment) Then
                MsgBox(0,"","有批注")
        Else
                MsgBox(0,"","无批注")
        EndIf
endwith        
这样试下
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 08:21 , Processed in 0.077812 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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