vb连接access excel步骤 excel 导入access

本文详细介绍使用VB进行数据库操作的方法,包括连接Access数据库、显示数据、连接Excel并读取数据等步骤。提供了完整的示例代码,适用于初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步

新建vb工程 新建数据库

 

第二步

引入数据库环境:

ms activiteX data  OBJECTS 2.8 LIBRARY

ms excel 11.0

引入显示控件:

常用的有三个

datagrid:可以直接从表格修改数据库数据 但是不能设置每行的颜色  推荐2st

flexgrid:可以显示数据库数据 只读的

hflexgrid:支持ado 可以设置每行显示数据的颜色  推荐1st

 

第三步:编写代码 将数据库数据筛选显示到表格控件里面

----------------------------------------------------------------------

 

下面给出我写的vb连接access 和excel的源代码

----------------------------------------------------------------------

 

 

 

全部源代碼

'-------define hong------------
Dim ConStr As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Dim cn1 As ADODB.Connection
Dim rs1 As ADODB.Recordset

Private statestring As String

Private Sub Command1_Click()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
Dim Source As String

CommonDialog1.Filter = "All Files (*.*)|*.xls"
CommonDialog1.FilterIndex = 2
CommonDialog1.ShowOpen
Text3.Text = CommonDialog1.FileName
 Source = CommonDialog1.FileName
With cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Source & ";Extended Properties=Excel 8.0;"
.Open
.Execute "INSERT INTO [toolsok] IN '" & App.Path & "\toolsdemo.mdb' SELECT * FROM [Sheet1$] "
.Close
End With
MsgBox "ok"
End Sub

Private Sub Command2_Click()
On Error GoTo ErrHandler
CommonDialog1.Filter = "All Files (*.*)|*.xls"
CommonDialog1.FilterIndex = 2
CommonDialog1.ShowOpen
Text3.Text = CommonDialog1.FileName
Exit Sub
ErrHandler:
End Sub

Private Sub Form_Load()
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\toolsdemo.mdb;Persist Security Info=False"
'------------------change
cn.Open ConStr
cn.CursorLocation = adUseClient
  Select Case cn.State
    Case adStateClose
         statestring = "adStateClosed"
    Case adStateOpen
         statestring = "adStateOpen"
  End Select
  If statestring = "adStateClosed" Then
MsgBox "CONNECT ERROR!", , statestring
Else
End If
'----------open the table------------------
rs.Open "SELECT * FROM toolsok order by 識別碼 desc", cn, 2, 3
Set DataGrid1.DataSource = rs
Text4.Text = rs.d
DataGrid1.Refresh
Call show_excel
End Sub

Private Function show_excel()
Set cn1 = New ADODB.Connection
Set rs1 = CreateObject("ADODB.Recordset")

Dim XLS_FILE As String
Set cn1 = CreateObject("ADODB.Connection")
Set rs1 = CreateObject("ADODB.Recordset")
cn1.Open "provider=Microsoft.Jet.OLEDB.4.0;" & "data source=" & App.Path & "/excel.xls;" & "Extended Properties=Excel 8.0;"
rs1.Open "select * from [sheet1$]", cn1, 3, 3

Text2.Text = rs1.RecordCount
Set MSHFlexGrid1.DataSource = rs1
MSHFlexGrid1.Refresh
End Function


VB壓縮access2003

'工程引入Microsoft Jet and Replication Objects Library
Private Sub Command1_Click()
Dim path, path1 As String
Dim FIXDB As New JRO.JetEngine
path = App.path & "\base\tmsdata.mdb"
path1 = App.path & "\base\tmsdata_tmp.mdb"
FIXDB.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path, _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path1


Kill path  '刪除源文件
FileCopy path1, path  '生成壓縮後的源文件
Kill path1            '刪除緩存的文件
MsgBox " OK"
End Sub

Dim extend_str As String Dim execl_cnn As New ADODB.Connection Dim execl_rst As New ADODB.Recordset Dim execl_count_rst As New ADODB.Recordset '纪录数量 Dim execl_field_rst As New ADODB.Recordset Dim execl_strconn As String Dim execl_strcmd As String Dim execl_count_str As String Dim insertStr As String 操作oracle数据库的记录集 Dim rst As ADODB.Recordset CommonDialog1.ShowOpen extend_str = Right(CommonDialog1.FileName, 3) If (extend_str = "xls") Then execl_cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & CommonDialog1.FileName & _ ";Extended Properties=Excel 8.0;" ElseIf (extend_str = "dbf") Then execl_cnn.ConnectionString = "Provider=MSDASQL.1;Driver=Microsoft Visual Foxpro Driver;SourceType=DBF;DBQ=" & getDir (CommonDialog1.FileName) execl_cnn.Open End If If (extend_str = "xls") Then execl_strcmd = "SELECT * from `Sheet1$` " execl_count_str = "SELECT count(*) from `Sheet1$` " execl_field_rst.Open execl_count_str, execl_cnn If (execl_field_rst.Fields(0).Value = 0) Then execl_strcmd = "SELECT * from [" & getFileNoExt(getfile(CommonDialog1.FileName)) & "$] " execl_count_str = "SELECT count(*) from [" & getFileNoExt(getfile(CommonDialog1.FileName)) & "$] " End If execl_field_rst.Close ElseIf (extend_str = "dbf") Then execl_strcmd = "SELECT * from " & CommonDialog1.FileName execl_count_str = "SELECT count(*) from " & CommonDialog1.FileName End If execl_rst.Open execl_strcmd, execl_cnn execl_count_rst.Open execl_count_str, execl_cnn If (CommonDialog1.FileName "") Then '进度条设置 ProgressBar1.Min = 0 ProgressBar1.max = execl_count_rst.Fields(0).Value If (execl_rst.RecordCount) Then '如果有记录 If (Option1.Value) Then '如果是仪器总库 If (execl_rst.Fields.Count = 8) Then Set rst = yg_gain_table_recordset("yg_device") execl_rst.MoveFirst Do While (Not execl_rst.EOF) rst.AddNew rst.Fields(0).Value = yg_getNextId("yg_device_id") rst.Fields(1).Value = execl_rst.Fields(0).Value & "" rst.Fields(2).Value = execl_rst.Fields(1).Value & "" rst.Fields(3).Value = execl_rst.Fields(2).Value & "" rst.Fields(4).Value = execl_rst.Fields(3).Value & "" rst.Fields(5).Value = execl_rst.Fields(4).Value & "" rst.Fields(6).Value = execl_rst.Fields(5).Value & "" rst.Fields(7).Value = execl_rst.Fields(6).Value & "" rst.Fields(8).Value = execl_rst.Fields(7).Value & "" rst.Update execl_rst.MoveNext ProgressBar1.Value = ProgressBar1.Value + 1 DoEvents Loop yg_free_recordset rst Else MsgBox "结构不一致" Exit Sub End If End If If (Option2.Value) Then '如果是外借仪器 If (execl_rst.Fields.Count = 12) Then Set rst = yg_gain_table_recordset("yg_out_device") execl_rst.MoveFirst Do While (Not execl_rst.EOF) rst.AddNew rst.Fields(0).Value = yg_getNextId("yg_out_device_id") rst.Fields(1).Value = execl_rst.Fields(0).Value & "" rst.Fields(2).Value = execl_rst.Fields(1).Value & "" rst.Fields(3).Value = execl_rst.Fields(2).Value & "" rst.Fields(4).Value = execl_rst.Fields(3).Value & "" rst.Fields(5).Value = execl_rst.Fields(4).Value & "" rst.Fields(6).Value = execl_rst.Fields(5).Value & "" rst.Fields(7).Value = execl_rst.Fields(6).Value & "" rst.Fields(8).Value = execl_rst.Fields(7).Value & "" rst.Fields(9).Value = execl_rst.Fields(8).Value & "" rst.Fields(10).Value = execl_rst.Fields(9).Value & "" rst.Fields(11).Value = execl_rst.Fields(10).Value & "" rst.Fields(12).Value = execl_rst.Fields(11).Value & "" rst.Update execl_rst.MoveNext ProgressBar1.Value = ProgressBar1.Value + 1 DoEvents Loop yg_free_recordset rst Else MsgBox "结构不一致" Exit Sub End If End If
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值