请问VB如何提取Excel文件中的数据?

有一EXCEL文件,D:\客户资料.xls,sheet1的A列为客户ID号。建一VB工程,有控件TEXT1、COMMAND1、TEXT2、COMMAND2,在TEXT1里... 有一EXCEL文件,D:\客户资料.xls,sheet1的A列为客户ID号。建一VB工程,有控件TEXT1、COMMAND1、TEXT2、COMMAND2,在TEXT1里输入一个ID号,按COMMAND1,查找EXCEL文件中所对应的ID号,比如说在A6单元格,提取这个ID号所在行的第二个单元格,也就是B6单元格中的内容显示于TEXT2内,修改TEXT2中的内容,按COMMAND2,将修改后的TEXT2.TEXT填入B6单元格,完成。请问如何编写?谢谢! 展开
 我来答
zgwxm
2010-04-11 · 经典歌曲、名人名家歌曲视频
zgwxm
采纳数:1792 获赞数:21142

向TA提问 私信TA
展开全部
做起来太麻烦了。请参阅我的博客:http://hi.baidu.com/zgmg/blog/item/ab8d2dd1888dbcdf572c84bf.html
Private Sub Command1_Click()
If ZID(Text1) = 0 Then
MsgBox "对不起,没找到您输入的ID!"
Else
Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
xlApp.Visible = False
Set xlBook = xlApp.Workbooks.Open("D:\客户资料.xls")
Text2 = xlApp.Worksheets("Sheet1").Range("A1").Cells(ZID(Form1.Text1), 2)
End If
On Error Resume Next
xlBook.Close (True)
xlApp.ActiveWorkbook.Close
xlApp.Quit
Set xlApp = Nothing
Shell "taskkill.exe /im Excel.exe /f", vbHide
End Sub
Function ZID(ID As String) As Integer
Dim I As Integer
Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
xlApp.Visible = False
Set xlBook = xlApp.Workbooks.Open("D:\客户资料.xls")
I = 1
Do
If xlApp.Worksheets("Sheet1").Range("A1").Cells(I, 1) = "" Then
ZID = 0
Exit Function
End If
If xlApp.Worksheets("Sheet1").Range("A1").Cells(I, 1) = Form1.Text1 Then
ZID = I
Exit Do
End If
I = I + 1
Loop
On Error Resume Next
xlBook.Close (True)
xlApp.ActiveWorkbook.Close
xlApp.Quit
Set xlApp = Nothing
End Function
Private Sub Command2_Click()
If ZID(Text1) = 0 Then
MsgBox "对不起,没找到您输入的ID!"
Else
Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
xlApp.Visible = False
Set xlBook = xlApp.Workbooks.Open("D:\客户资料.xls")
xlApp.Worksheets("Sheet1").Range("A1").Cells(ZID(Form1.Text1), 2) = Val(Text2)
xlBook.Save
End If

On Error Resume Next
xlBook.Close (True)
xlApp.ActiveWorkbook.Close
xlApp.Quit
Set xlApp = Nothing
Shell "taskkill.exe /im Excel.exe /f", vbHide
End Sub
1226051969
2010-04-11 · TA获得超过194个赞
知道答主
回答量:101
采纳率:0%
帮助的人:0
展开全部
Dim a, b, i
Private Sub Command1_Click()
On Error Resume Next
Text2 = "": i = 0
'如果不是第一个你可以把下面的Sheets("sheet1")改为相应的表
i = b.sheets("sheet1").Range("a:a").Find(What:=Text1, LookAt:=1).Row
Text2 = b.sheets("sheet1").cells(i, 2)

End Sub

Private Sub Command2_Click()
b.sheets("sheet1").cells(i, 2) = Text2
End Sub

Private Sub Form_Load()
Set a = CreateObject("Excel.Application")
Set b = a.Workbooks.Open("d:\q1.xls") '这里改为你的EXCEL文件的路径及文件全名
End Sub

Private Sub Form_Unload(Cancel As Integer)
b.Close 1
End Sub

说明:因为要提取的数据量不大,因此可以用这种方法.
由于这种操作的效率是很低的,不能采取循环的方法来查找匹配的单元格,本程序采用了FIND方法(全字匹配)来检索,因此,本程序的效率是没有问题的.

如果需要大量提取数据,建议用数据库的访问方式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
PLA上将
2010-04-11 · 超过16用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:0
展开全部
使用OLE控件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wwuusshha
2010-04-17
知道答主
回答量:44
采纳率:0%
帮助的人:25.6万
展开全部
Ctrl+H
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式