请问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单元格,完成。请问如何编写?谢谢!
展开
展开全部
做起来太麻烦了。请参阅我的博客: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
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
展开全部
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方法(全字匹配)来检索,因此,本程序的效率是没有问题的.
如果需要大量提取数据,建议用数据库的访问方式
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方法(全字匹配)来检索,因此,本程序的效率是没有问题的.
如果需要大量提取数据,建议用数据库的访问方式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用OLE控件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询