495910670 发表于 2013-5-14 22:57:45

求助 au3 Excel判断是否存在批注

#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也会出错。

user3000 发表于 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

495910670 发表于 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

user3000 发表于 2013-5-15 21:44:54

回复 3# 495910670


    我给出的代码,第一次运行 _add_comment() 时是没有批注的. 没有发现报错程序崩溃的情况.
环境:64位 WIN7 + OFFICE2010

495910670 发表于 2013-5-16 22:09:23

我的系统是win8 64 + office20100

kevinch 发表于 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        这样试下
页: [1]
查看完整版本: 求助 au3 Excel判断是否存在批注