excel2000对象库的问题?(抱歉啦,菜鸟没有多少分)(50分)

  • 主题发起人 主题发起人 microyzy
  • 开始时间 开始时间
M

microyzy

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序里调用了excel2000对象库(EXCEL9.OLB),打包时也包含进去了,
但是安装后就是用不了,excel2000对象库不知怎么,注册不上。
 
说清楚点啦。
要不源代码贴出来看看
 
程序在本机已经做好了,要是对方机器有相同的excel2000就可以直接运行。
但没有装过excel2000的不行。
 
那肯定不行.EXCEL要是这么容易就搞定了,微软还卖什么钱哟.所以,假如只是你们公司内部
用,你可以用EXCEL,要是去卖钱,就不要选择EXCEL了.你打包也不行,只有在客户机上装了EXCEL
才行.
 
安装msjet4.0不就行了吗!
 
可我的程序是直接打开excel文件的,调的是excel.application
另外,对方机器装了excel2000,还是不行(对象不可识别),不知
是不是版本不一样。
 
跟踪一下程序,看看问题出在哪里,实在不行就把源程序帖出来让大伙帮助分析一下!
 
我用vb做的,delphi我是超级菜鸟(刚学的),大家不介意我把vb的源代码贴出来吗?
问题就出在下面的一个函数,但由于在我的公司所有机器上都没有问题,所以没法跟踪
到底哪一行出错,公司安装的是同一个光盘上的office2000。
根据对方的反应,对方也装了office2000。出错信息是:不可识别的对象类型。但如果
不安装office2000,错误信息应该是:不能创建对象。所以我怀疑是不是两个office2000的
差异造成。
(引用了excel90的对象库)
问题应该出在前面的几行,与后面的代码无关。
Public Sub loadxls(str1)
'读一个excel文件
'str1:excel文件名
Dim i As Long'temp var
Dim lins As Long'temp var
Dim b1 As New excel.Workbook
Dim sheet1 As New Worksheet
Set b1 = excel.Workbooks.Open(apppath & str1)'估计出错的地方
Set sheet1 = b1.Worksheets(1)
Dim name1 As Long '名称所在行号
Dim bh1 As Long'编号所在行号
Dim gn1 As Long'功能所在行号
For i = 1 To sheet1.Rows.count
If sheet1.Cells(i, 1) = name_str Then name1 = i
If sheet1.Cells(i, 1) = bh_str Then bh1 = i
If sheet1.Cells(i, 1) = gn_str Then gn1 = i
If name1 <> 0 And bh1 <> 0 And gn1 <> 0 Then Exit For
Next
name = str1
bh = str1
gn = str1
lins = 0
If lins = 0 Then
If gn1 <> 0 Then
For i = 2 To sheet1.Columns.count
If Trim(sheet1.Cells(gn1, i)) <> "" Then
gn = Trim(sheet1.Cells(gn1, i))
lins = i
Exit For
End If
Next
End If
Else
gn = Trim(sheet1.Cells(gn1, lins))
End If
If Trim(main.Text1.Text) <> "" Then
If UCase(gn) <> UCase(Trim(main.Text1.Text)) Then Exit Sub
End If
If lins = 0 Then
If name1 <> 0 Then
For i = 2 To sheet1.Columns.count
If Trim(sheet1.Cells(name1, i)) <> "" Then
name = Trim(sheet1.Cells(name1, i))
lins = i
Exit For
End If
Next
End If
Else
name = Trim(sheet1.Cells(name1, lins))
End If
If lins = 0 Then
If bh1 <> 0 Then
For i = 2 To sheet1.Columns.count
If Trim(sheet1.Cells(bh1, i)) <> "" Then
bh = Trim(sheet1.Cells(bh1, i))
lins = i
Exit For
End If
Next
End If
Else
bh = Trim(sheet1.Cells(bh1, lins))
End If

b1.Close
Set b1 = Nothing
excel.Workbooks.Close
excel.Application.Quit
main.List1.AddItem name
main.List2.AddItem bh
main.List3.AddItem gn
Form1.List1.AddItem str1
count = count + 1
End Sub

 
你的程序中用到了一些VB的保留字,如NAME、COUNT等,系统当然要出错的!
和你的比较一下吧:

'读一个excel文件
'str1:excel文件名
Dim i As Long 'temp var
Dim lins As Long 'temp var
Dim app As New Excel.application
Dim b1 As New Excel.Workbook
Dim sheet1 As New Worksheet
Set b1 = Excel.Workbooks.Open("c:/book1.xls") '估计出错的地方
Set sheet1 = b1.Worksheets(1)
Dim name1 As Long '名称所在行号
Dim bh1 As Long '编号所在行号
Dim gn1 As Long '功能所在行号
For i = 1 To sheet1.Rows.Count
If sheet1.Cells(i, 1) = name_str Then name1 = i
If sheet1.Cells(i, 1) = bh_str Then bh1 = i
If sheet1.Cells(i, 1) = gn_str Then gn1 = i
If name1 <> 0 And bh1 <> 0 And gn1 <> 0 Then Exit For
Next
name1 = str1
bh = str1
gn = str1
lins = 0
If lins = 0 Then
If gn1 <> 0 Then
For i = 2 To sheet1.Columns.Count
If Trim(sheet1.Cells(gn1, i)) <> "" Then
gn = Trim(sheet1.Cells(gn1, i))
lins = i
Exit For
End If
Next
End If
Else
gn = Trim(sheet1.Cells(gn1, lins))
End If
If Trim(Text1.Text) <> "" Then
If UCase(gn) <> UCase(Trim(Text1.Text)) Then Exit Sub
End If
If lins = 0 Then
If name1 <> 0 Then
For i = 2 To sheet1.Columns.Count
If Trim(sheet1.Cells(name1, i)) <> "" Then
name1 = Trim(sheet1.Cells(name1, i))
lins = i
Exit For
End If
Next
End If
Else
name1 = Trim(sheet1.Cells(name1, lins))
End If
If lins = 0 Then
If bh1 <> 0 Then
For i = 2 To sheet1.Columns.Count
If Trim(sheet1.Cells(bh1, i)) <> "" Then
bh = Trim(sheet1.Cells(bh1, i))
lins = i
Exit For
End If
Next
End If
Else
bh = Trim(sheet1.Cells(bh1, lins))
End If

b1.Close
Set b1 = Nothing
Excel.Workbooks.Close
Excel.application.Quit
List1.AddItem name1
List2.AddItem bh
List3.AddItem gn
Form1.List1.AddItem str1
'Count = Count + 1

 
谢谢提示,我正想试试。
问题:为什么同样的程序在我的机器上没事呢?
 
看来还是结了吧。
 
多人接受答案了。
 
后退
顶部