Foxtable(狐表)用户栏目专家坐堂 → 有办法读取XLS文件单元格的批注吗?


  共有3571人关注过本帖树形打印复制链接

主题:有办法读取XLS文件单元格的批注吗?

帅哥哟,离线,有人找我吗?
gzdw
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:308 积分:3351 威望:0 精华:0 注册:2011/12/22 17:52:00
有办法读取XLS文件单元格的批注吗?  发帖心情 Post By:2014/5/14 12:25:00 [只看该作者]

找了一下帮助,只有清除单元格信息(包括批注)的方法。
论坛上也只有输出XLS文件时,添加批注的办法。


现有一个XLS文件的某列带了批注,想把它读入到备注列中。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/14 14:15:00 [只看该作者]

 可以设置,就肯定可以读取啊。

 

 参考下面的代码,获取第一个单元格的批准

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("e:\test.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)

Dim pz As String = ws.cells(1,1).Comment.Text
msgbox(pz)

app.quit


 回到顶部
帅哥哟,离线,有人找我吗?
gzdw
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:308 积分:3351 威望:0 精华:0 注册:2011/12/22 17:52:00
  发帖心情 Post By:2014/5/14 14:58:00 [只看该作者]

放在命令窗口去执行上述代码,出现以下提示,还有什么代码没写吗?
---------------------------
版本:2014.3.8.1
---------------------------
代码执行出错,错误信息:



System.NullReferenceException: Object variable or With block variable not set.

   at Microsoft.VisualBasic.CompilerServices.Symbols.Container..ctor(Object Instance)

   at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)

   at UserCode.Test()
---------------------------
确定   
---------------------------


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/14 15:08:00 [只看该作者]

 回复3楼,代码你都不会改一改?路径都不改,文件都没有?

 

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("e:\test.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)

Dim pz As String = ws.cells(1,1).Comment.Text
msgbox(pz)

app.quit


 回到顶部
帅哥哟,离线,有人找我吗?
gzdw
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:308 积分:3351 威望:0 精华:0 注册:2011/12/22 17:52:00
  发帖心情 Post By:2014/5/14 15:21:00 [只看该作者]

把我文件放在C:\,也改了命令。

跟踪时,是下面这句出错:
Dim pz As String = ws.cells(1,1).Comment.Text


而且,以下语句是可以执行的。
'添加批注
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("C:\test.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Ws.Range("1:5").ClearComments '清除原有批注
Ws.Range("B2").AddComment("批注测试,20140514添加")  'B2单元格添加批注,注意批注内容在园括号内
App.Visible = True

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/14 15:38:00 [只看该作者]

 回复5楼,我测试没有问题。

 

 你上传一个你测试不成功的例子吧。很简单的一个内容。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/14 15:42:00 [只看该作者]

 我再测试了一下。肯定是你的那个单元格没有标注,所以会出错。

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("e:\test.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)

If ws.cells(100,1).Comment Is Nothing Then
    msgbox("没有标注")
Else
    Dim pz As String = ws.cells(1,1).Comment.Text
    msgbox(pz)
End If

app.quit


 回到顶部
帅哥哟,离线,有人找我吗?
gzdw
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:308 积分:3351 威望:0 精华:0 注册:2011/12/22 17:52:00
  发帖心情 Post By:2014/5/14 17:06:00 [只看该作者]

刚才出去了。

 

是我没注意到去关单元格添加批注,相应单元格有批注时,可以读出了。

谢谢!

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("c:\test.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)

If ws.cells(2,2).Comment Is Nothing Then
    Output.Show("没有标注")
Else
    Dim pz As String = ws.cells(2,2).Comment.Text
    Output.Show(pz)
End If

app.quit

 

[此贴子已经被作者于2014-5-14 17:06:56编辑过]

 回到顶部