【发布时间】:2014-12-31 16:20:36
【问题描述】:
我正在尝试在 MS Access 模块中编写一个子例程,该模块访问 MS Excel 工作表并向指定范围添加注释。我正在使用后期绑定,这样我的信心不足的用户就不需要摆弄添加引用。尝试将 cmets 添加到范围对象时,会引发以下错误:
运行时错误“1004”:应用程序定义的或对象定义的错误。
使用以下示例代码,假设打开的工作表有一个带有注释“Hello”的单元格 A1,带有注释“World”的单元格 A2,并且单元格 A3 没有注释。
Sub export(strFilePath As String)
Dim XL As Object
Dim WB as Object
Dim WS as Object
Set XL = CreateObject("Excel.Application")
XL.Workbooks.Open strFilePath
Set WB = XL.Workbooks(1)
Set WS = WB.Sheets("ExportSheet")
Debug.Print WS.Comments.Count 'returns accurate number of comments on sheet (2)
Debug.Print WS.Range("a1").Comment.Text 'returns comment of cell A1 (Hello)
WS.Range("a1").Comment.Delete 'removes comment of cell A1
Debug.Print WS.Comments.Count 'returns accurate number of comments on sheet (1)
Debug.Print WS.Range("a2").Comment.Text 'returns comment of cell A2 (World)
WS.Range("a2").ClearComments 'removes comment of cell A2
Debug.Print WS.Comments.Count 'returns accurate number of comments on sheet (0)
WS.Range("a3").AddComment("HelloAgain") 'causes 1004 error
WS.Range("a3").AddComment "HelloAgain" 'also causes 1004 error, if the above line is commented out
End Sub
除了range.AddComment 方法外,我可以访问与 cmets 相关的方法。 如何添加评论?
【问题讨论】:
-
尝试删除 "HelloAgain" 周围的括号 --> WS.Range("A3").AddComment "HelloAgain"
-
不幸的是,无论注释是否在括号内,都会出现同样的错误。我已经更新了我的原始帖子以反映这一点。
-
嗯...A3 中是否存在现有评论?我在 A1 和 A2 中看到了您的清算 cmets,但没有在 A3 中看到。如果该范围内已存在评论,则会引发错误 1004。
-
Fink,单元格 A3 不包含注释。下面的一些答案建议清除单元格中的评论以确保可以添加新评论。我可以使用
.ClearComments清除单元格的注释(不存在),但.AddComment方法仍然会抛出相同的错误。
标签: excel ms-access vba late-binding