❶ vba如何调用Access的查询,并显示查询结果
1、首先,在电脑中找到并打开Access数据库,如下图所示。
❷ 请教怎么在access中用VBA导入excel数据到access库
编程思路
1、打开excel文件,并读取Excel的数据
2、连接access数据库
3、存入excel数据库(插入操作)
具体的语句网上有很多,楼主网络一下, 然后根据你的需求改一下。
❸ 如何用vba代码将access数据库连接求代码
下面这段程序是连接数据库,并将excel表格内容写入数据库。代码如下:
Sub FYMXDL()
Dim XQID As Integer
Dim JZID As Integer
Dim FYID As Integer
Dim FBXZ As String '分包性质
Dim DW As String
Dim SARR(1 To 31) As Double
Dim rst As New ADODB.Recordset
mYpath = ThisWorkbook.Path & "\jzfydata.accdb"
Set cONn = CreateObject("ADODB.Connection")
cONn.ConnectionString = "Provider=Microsoft.Ace.OleDB.12.0;Data Source=" & mYpath
cONn.ConnectionString = cONn.ConnectionString & ";Jet OLEDB:Database "
cONn.Open
XQID = Cells(3, 2).Value
JZID = Cells(3, 5).Value
'清空改小区-建筑的费用明细
sql = "delete from fymxb where 小区ID=" & XQID & " AND 建筑ID = " & JZID
cONn.Execute Sql
Const kshh = 7
hh = kshh
Do While Cells(hh, 3).Value > 0
FYID = Cells(hh, 3).Value
FBXZ = Cells(hh, 11).Text
For i = 1 To 31
SARR(i) = Round(Cells(hh, 13 + i - 1).Value, 2)
Next i
Sql = "INSERT INTO fymxb(小区ID,建筑ID,费用ID,分包性质,工作量,单价合计_中标,人工费_中标, 主材费_中标, 辅材费_中标, 机械费_中标, 管理费_中标, 利润_中标,规费_中标,税金_中标,合价_中标,单价合计_标准成本,人工费_标准成本,主材费_标准成本,辅材费_标准成本,机械费_标准成本,管理费_标准成本,利润_标准成本,规费_标准成本,税金_标准成本,合价_标准成本,单价合计_实际成本,人工费_实际成本,主材费_实际成本,辅材费_实际成本,机械费_实际成本,管理费_实际成本,利润_实际成本,规费_实际成本,税金_实际成本,合价_实际成本) VALUES (" & XQID & ", " & JZID & ", " & FYID & ", '" & FBXZ & "'"
For i = 1 To 31
Sql = Sql & "," & SARR(i)
Next i
Sql = Sql & " )"
cONn.Execute Sql
hh = hh + 1
Loop
End Sub
❹ access2007 如何在VBA连接自身的数据
1,需要添加新的引用
2,连接数据库的方式已经不在是:
“provider=microsoft.jet.oledb.4.0;data source=。。。。”
新的连接方式为:
“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=。。。”
例如:
Dim cn As New ADODB.Connection
Dim strCn As String
Dim strSQL As String
Dim rs As New ADODB.Recordset
Stpath = ThisWorkbook.Path & Application.PathSeparator & "SPSDI.accdb" '设定access文件路径
cn.Provider = "Microsoft.ACE.OLEDB.12.0"
strCn = "Data Source =" & Stpath & ";Jet OLEDB:Database Password=" & ""
cn.Open (strCn)
strSQL = "SELECT * FROM table"
rs.Open strSQL, cn, adOpenStatic
❺ 请教怎么在access中用VBA导入excel数据到access库
方法一:在eccel VBA编辑器编写代码,使用FOR循环导入:
Sub 利用Excel的VBA将数据写入Access()
'定义ADODB 连接Access数据库
Dim Cnn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim strCon As String
Dim strFileName As String '数据库文件名
strFileName = InputBox("请输入文件路径及文件名:", "Excel传递数据至Access", "E:\ExcelTest\Staff.mdb")
'连接字符串,我这里是Access2010,所提供者参数为:Provider=Microsoft.ACE.OLEDB.12.0;
'如果此参数不能使用,根据自己的电脑修改这个字符串
'至于连接至的数据库名,根据自己的电脑修改,或用一个对话框或其他方式将此值传递进程序
strCon = "provider=Microsoft.jet.OLEDB.4.0;" _
& "Data Source=" & strFileName & ";"
Cnn.Open strCon
Rs.ActiveConnection = Cnn
Rs.LockType = adLockOptimistic
Rs.Open "Employee" '假设表为Employee
'定义Excel表中的数据区域以写入Access
Dim Sht As Worksheet
Dim Rn As Long
Dim Cn As Long
Set Sht = ThisWorkbook.Sheets("Sheet1")
'假设将 Sheet1 表的 2-6行的1、2、3列写入Access表
For Rn = 2 To 6
Rs.AddNew
Rs!num = Sht.Cells(Rn, 1) ’num,name,department是数据库中指定表的字段
Rs!Name = Sht.Cells(Rn, 2)
Rs!department = Sht.Cells(Rn, 3)
Rs.Update
Next Rn
MsgBox "完成!"
Rs.Close
Cnn.Close
Set Rs = Nothing
Set Cnn = Nothing
Set Sht = Nothing
End Sub
方法二:在access VBA编辑器中编写代码
Sub ExcelToAccess()
DoCmd.TransferSpreadsheet acImport, , "Staff", "E:\ExcelTest\Employee.xls", True, "Sheet1!" ‘DoCmd.TransferSpreadsheet是access编辑器中函数
End Sub
❻ VBA 连接Access数据库查询
你数据对不上是少数据吗?你的语句中用了like,但没有通配符,试试修改
sqls = "SELECT * FROM NDYX where FIELD(0) like'*" & a & "*'" '定义SQL查询命令字符串"
❼ 如何用vba将ACCESS窗体和查询导入另一个数据库中
Access是微软Office组件的数据库软件,使用它可以进行简单的数据库软件的开发。但Access的图表功能和数据分析功能不如Excel强大,常用的做法可以将Access中的数据导入Excel中再进行处理。
代码利用ADO组件可以方便地对各种数据进行连接和访问。ADO组件中的Connection对象可以实现对数据库的连接,并可以快速实现SQL语句的执行,然后再用VBA将SQL查询的结果输出到Excel表格中。
打开VBE窗口,选择菜单“工具”一“引用”,勾选MicrosoftActiveXDataObjects2.8Library,并单击“确定”按钮。
利用ADO连接数据库ADO的全称是ActiveXDataObject,是一个用于存取数据源的COM组件,用以快速实现各种数据库的连接、读取、写入。在ADO组件中有一个Connection对象,利用Connection对象的Open方法可以实现数据库的连接。
❽ Excel VBA连接ACCESS数据库
stpath=ThisWorkbook.Path&Application.PathSeparator&"attendance.accdb"
CN.Open"Provider=Microsoft.ACE.OLEDB.12.0;DataSource="&stpath&";JetOLEDB:DatabasePassword=cjw123456"
供参考。
❾ 如何用vba代码将access数据库连接求代码
>>.用vba连接ACESS:
Set Conn= Server.CreateObject("ADODB.Connection")
Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("sample.mdb")
Conn.Open
>>.用vba连接EXCEL,打开EXCEL记录集:
Set connExcel = Server.CreateObject("ADODB.Connection")
connStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath( "InputExcel\sample.xls") &";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';"
connExcel.Open connStr
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "Select * From [sheet1$]", connExcel, 0, 1
>>.vba数据处理[转载]:
===============================================
用Excel+VBA+SQL Server进行数据处理
使用Excel+VBA+SQL Server进行数据处理是一种简单有效方法,掌握以下基础知识实现快速入门(掌握excel/vba/sqlserver各1%内容,你就能成为数据处理高手的:)):
一、Excel基础知识
了解工作簿(Workbook)、工作表(Worksheet)、单元格(Cell)等的基本概念,熟悉一些基本操作。
二、SQL Server基础知识
参见
1、数据库有关概念:数据库、表、记录、字段
A)数据库(Database)
B)表(Table)、记录(行,Row,Record)、字段(列,Column,Field)...
2、常见数据操作的SQL命令:select, insert , update ,delete
三、VBA基础知识:
1、基本概念。
2、基本控制结构:
·顺序结构:程序按顺序执行;
·分支结构命令:
if 条件 then
<如果条件成立执行本语句块>
end if
或:
if ... then
...
else
...
end if
或:
if ... then
...
elseif ...
...
else
...
end if
等。。
·循环结构命令:
for i=? to ??
...
next
或
do while ...
...
loop
3、在VBA中操纵对象,先理解操纵EXCEL工作表和数据库对象:
将值写入EXCEL单元格,如:thisworkbook.worksheets("sheet1").cells(1,2)=1234444
从EXCEL单元格取得数值,如:x=thisworkbook.worksheets("sheet1").cells(1,2)
数据库操作:
cn.open ...(建立数据连接对象)
rs.open ... (建立数据集对象)
x=rs("...") (读取数值)
rs.close (关闭rs)
cn.close (关闭cn)
cn.execute (执行sql语句)
...
四、例子
sub test() '定义过程名称
Dim i As Integer, j As Integer, sht As Worksheet 'i,j为整数变量;sht 为excel工作表对象变量,指向某一工作表
Dim cn As New ADODB.Connection '定义数据链接对象 ,保存连接数据库信息;请先添加ADO引用
Dim rs As New ADODB.Recordset '定义记录集对象,保存数据表
Dim strCn As String ,strSQL as String '字符串变量
strCn = "Provider=sqloledb;Server=服务器名称或IP地址;Database=数据库名称;Uid=用户登录名;Pwd=密码;" '定义数据库链接字符串
'下面的语句将读取数据表数据,并将它保存到excel工作表中:画两张表想象一下,工作表为一张两维表,记录集也是一张两维表
strSQL = "select 字段1,字段2 from 表名称" '定义SQL查询命令字符串
cn.Open strCn '与数据库建立连接,如果成功,返回连接对象cn
rs.Open strSQL, cn '执行strSQL所含的SQL命令,结果保存在rs记录集对象中
i = 1
Set sht = ThisWorkbook.Worksheets("sheet1") '把sht指向当前工作簿的sheet1工作表
Do While Not rs.EOF '当数据指针未移到记录集末尾时,循环下列操作
sht.Cells(i, 1) = rs("字段1") '把当前记录的字段1的值保存到sheet1工作表的第i行第1列
sht.Cells(i, 2) = rs("字段2") '把当前字段2的值保存到sheet1工作表的第i行第2列
rs.MoveNext '把指针移向下一条记录
i = i + 1 'i加1,准备把下一记录相关字段的值保存到工作表的下一行
Loop '循环
rs.Close '关闭记录集,至此,程序将把某数据表的字段1和字段2保存在excel工作表sheet1的第1、2列,行数等于数据表的记录数
'下面的语句将读取excel工作表数据,并将之简单计算后存入数据库,这里使用上面程序中的一些变量
'假设分别读取工作表sheet1第5行至第500行的第8列和第9列已存在的数据,然后将它们相乘,并将积存入数据库的某个表
strSQL="" '清空上面定义的变量
for i=5 to 500 '循环开始,i从5到500
strSQL=strSQL & "insert into 表名(字段) values(" & sht.cells(i,8)*sht.cells(i,9) & ") ;" '构造SQL命令串
next
'至此生成一串SQL命令串,保存的内容大概为:insert into 表名(字段) values(数值1);insert into 表名(字段) values(数值2);...
cn.execute strSQL '执行该SQL命令串,如果SQL命令没有错误,将在数据库中添加501个记录;也可以用rs.open strSQL,cn 执行
cn.close '关闭数据库链接,释放资源
end sub
=====================================
>>.听说可以用一条语句实现记录集导入excel表,而且不是用循环的,不知道是真是假,等待高手的回答。