以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关excel表读写问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=107900) |
-- 作者:yjh2002 -- 发布时间:2017/10/12 10:13:00 -- [求助]关excel表读写问题 做了个读写excel表的窗口,第一遍能正常工作。第二次选择另一个文件时,就提示“未将对象引用设置到对象实例”。把这个窗口关闭重新进入就正常了,不知道是啥原因。 |
-- 作者:有点蓝 -- 发布时间:2017/10/12 11:12:00 -- 具体相关代码贴出来看看 |
-- 作者:yjh2002 -- 发布时间:2017/10/12 11:37:00 -- Dim lj As String =e.Form.controls("TextBox2").value
\'获取文件 Dim gzbq As Integer=e.Form.controls("NumericComboBox3").value Dim gzbz As Integer=e.Form.controls("NumericComboBox4").value Dim mhs As Integer=e.Form.controls("NumericComboBox1").value-1 Dim mzs As Integer=e.Form.controls("NumericComboBox2").value-1 try Dim test As New XLS.Book(lj) \'定义一个Excel工作簿 Catch ex As Exception messagebox.Show("文件错误!","提示") Return End try Dim Book As New XLS.Book(lj) \'定义一个Excel工作簿 Dim zgzb As Integer=book.Sheets.Count If gzbq<0 Or gzbz<0 Then messagebox.show("起始页与终止页不能小于0!","提示") Return End If If gzbq>zgzb Or gzbz>zgzb Then messagebox.show("工作表选择范围为0-" & zgzb-1,"提示") Return End If If mhs<0 Then messagebox.show("起始行不能小于0!","提示") Return End If Dim i As Integer Dim dyg As String Dim mclj As String \'msgbox("aa") For myh As Integer=gzbq To gzbz Dim Sheet As XLS.Sheet = Book.Sheets(myh) \'引用工作簿的第一个工作表 i=mhs Do While 1=1 dyg=sheet(i,0).value mclj=sheet(i,0).Hyperlink If dyg="" Or mclj="" Then Exit Do Else Tables("抓取数据_table1").AddNew Tables("抓取数据_table1").Current("bh")=i Tables("抓取数据_table1").Current("cxdy")=sheet(i,0).value Tables("抓取数据_table1").Current("clj")=mclj Tables("抓取数据_table1").Current("yh")=myh End If i=i+1 Loop Next Tables("抓取数据_table1").save Tables("抓取数据_table1").Position=0 后面在timer里还有回写保存到excel的代码,应该没啥关系了。这段第一次运行没问题,运行完再选择一个新的文件就出错。
|
-- 作者:yjh2002 -- 发布时间:2017/10/12 11:40:00 -- 出错的位置在 Tables("抓取数据_table1").AddNew 之后,因为每次都要清空datatable。出错后会出现一行空白行,所以应该是执行完addnew后出的错误。 |
-- 作者:有点甜 -- 发布时间:2017/10/12 12:11:00 -- 试试改成
SystemReady = False Dim nr As Row = Tables("抓取数据_table1").AddNew nr("bh")=i
nr("cxdy")=sheet(i,0).value
nr("clj")=mclj
nr("yh")=myh
SystemReady = True
|
-- 作者:yjh2002 -- 发布时间:2017/10/12 14:02:00 -- 我先试试,请问SystemReady是个什么属性? |
-- 作者:有点甜 -- 发布时间:2017/10/12 14:05:00 -- 有可能是你填充值的时候触发了datacolchanged等事件导致的错误。
http://www.foxtable.com/webhelp/scr/2218.htm
|