使用MS Access将注释添加到MS Excel范围对象

我正在尝试编写访问MS Excel工作表的MS Access模块​​中的子例程,并将注释添加到指定的范围。 我正在使用后期绑定,这样我的低信心用户不需要添加引用。 尝试向范围对象添加注释时,会引发以下错误:

运行时错误“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方法之外的有关注释的方法。 我如何去添加评论?

单元格A3已经包含注释时发生此错误。 我能够重现它。

>>>编辑 – 尝试添加评论到任何单元格时发生问题

如果工作表与另一个工作表分组也会发生此问题。 见http://www.pcreview.co.uk/forums/did-lose-ability-add-edit-comments-excel-t3837597.html

重现:

  1. 在Excel中打开工作簿,然后单击Sheet1选项卡。
  2. 按住Shift键,单击Sheet2。 这导致表1和2被分组。
  3. 右键单击任何单元格。 “插入注释”选项消失了!
  4. 在审查/评论下,“新评论”选项呈灰色!

修理:

如果这确实是您的问题,那么尝试添加一行代码来取消组合工作表。

  Set WS = WB.Sheets("ExportSheet") WS.Select ' ungroup worksheets <-- ADD THIS CODE 

我发现了如何通过录制一个macros来使用VBA取消分组。 我右键单击工作表选项卡并select“取消组合表”,然后查看生成的代码。

发生此错误的原因是已有一个评论。 如果要覆盖任何现有注释,但不确定单元格是否可能已经有注释,则可以调用Range对象的.ClearComments方法。 这将清除单元格中的所有现有注释,但如果当前没有注释,则不会引发错误。

 WS.Range("a3").ClearComments WS.Range("a3").AddComment "HelloAgain"