求助 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也会出错。 答案好像就在你代码里吧?$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 首先感谢 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 回复 3# 495910670
我给出的代码,第一次运行 _add_comment() 时是没有批注的. 没有发现报错程序崩溃的情况.
环境:64位 WIN7 + OFFICE2010 我的系统是win8 64 + office20100 $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]