小白求救,vb.net反复出现System.NullReferenceException: 未将对象引用设置到对象的实例,请大神帮解!

古道白云 2019-01-29 11:46:48
这是一段用全局钩子快捷键后执行的程序,主要目的是对部分内容分词,并写入word文件。调试后反复出现System.NullReferenceException: 未将对象引用设置到对象的实例,且在执行后word文档会退出不知为何。自行查找了很多资料,仍然未解决问题,请大神解答,最好能修改下代码,新手一个要学的太多,实在不太明白,感谢。
Imports System.Windows.Forms
Imports JiebaNet.Segmenter
Imports Microsoft.Office.Interop.Word
Module GetWords
Public Function My_GetWords() '快捷键ALT+D后执行,获得待处理的句子
My_GetWords = ""
Dim app As Word.Application = Globals.ThisAddIn.Application '当前文档
Dim DocTxt As String
Dim segments As IEnumerable(Of String) '泛型,每个元素都为String类型
Dim a As Integer = app.Selection.Start
Dim segmenter = New JiebaSegmenter()
Try
'If app.ActiveDocument.Range.Words.Count >= 15 Then '如果文章字数大于15个,则始终取得光标之前的15个字
If app.ActiveDocument.Range.ComputeStatistics(WdStatistic.wdStatisticWords) >= 15 Then
DocTxt = app.ActiveDocument.Range(a - 15, a).Text '获取光标前面的字符
segments = segmenter.CutForSearch(DocTxt)
My_GetWords = String.Join("/", segments)
app.Selection.TypeText(My_GetWords)‘此处出问题。
'MessageBox.Show("【精确模式】:{0}", String.Join("/", segments)) 输出测试同样的问题。
Else
Return "未知"
End If
Catch e As System.NullReferenceException
Finally
End Try
End Function
End Module
...全文
661 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
清晨曦月 元老 2019-02-13
  • 打赏
  • 举报
回复
把引用对象定义为全局的
古道白云 2019-01-31
  • 打赏
  • 举报
回复
office是同样的版本。
正怒月神 2019-01-31
  • 打赏
  • 举报
回复
引用 4 楼 古道白云 的回复:
几个新情况: 1.My_GetWords初始化赋值后这个问题仍不能解决 2.用vs2017专业版存在这个问题,社区版却不存在 各位大神。何解?
确定是vs版本问题,而不是office版本问题??
古道白云 2019-01-30
  • 打赏
  • 举报
回复
单步执行却不出现这个错误!唉。
古道白云 2019-01-30
  • 打赏
  • 举报
回复
几个新情况:
1.My_GetWords初始化赋值后这个问题仍不能解决
2.用vs2017专业版存在这个问题,社区版却不存在
各位大神。何解?
Chasmれ 2019-01-30
  • 打赏
  • 举报
回复
app.Selection.TypeText(My_GetWords)‘此处出问题。 这块判断一下 My_GetWords 是否为null
shoppo0505 2019-01-30
  • 打赏
  • 举报
回复
出现exception会有提示在哪一行的阿。

最笨的办法,隔行print一下 各个参数。

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧