请问如何用vba将access的查询写入到excel表的指定区域?

问题比较复杂,access的查询有用到窗体里的值,这个是一定要的。注意是用access写入excel,不是excel读取excel

ACCESS的VBA和EXCEL的VBA语言有差别,不能直接用ACCESS直接执行EXCEL的数据处理。
但你可以形成一个ACCESS的TABLE,填写好数据后导出为EXCEL表格。
另外,你可以利用ACCESS的引用表来引用EXCEL,这样就可以直接添加和修改EXCEL的数据,当然也可以用查询去修改数据。但这种情况不支持多用户操作,会出现意外错误。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-09-07
用ADO把查询表的数据导到Excel表上(记得引用ADO和 Microsoft Excell 11.0 Objec Library),给一个例子的代码,供参考:
Private Sub Command1_Click()
On Error Resume Next
Dim oExcel As Object
Dim oBook As Object
Dim K As Integer
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Add()
With oBook.Worksheets(1)
With oBook.Worksheets(1).PageSetup ’设定页面边距
.LeftMargin = 0.275590551181102
.RightMargin = 0.275590551181102
.TopMargin = 0.275590551181102
.BottomMargin = 0.275590551181102

.Columns("A:A").ColumnWidth = 6 '设定Excel各列的宽度
.Columns("B:B").ColumnWidth = 5.2
.Columns("C:C").ColumnWidth = 10.5
.Columns("D:D").ColumnWidth = 25.7
.Columns("E:E").ColumnWidth = 6
.Columns("F:F").ColumnWidth = 4
.Columns("G:G").ColumnWidth = 3
.Columns("H:H").ColumnWidth = 4
.Columns("I:I").ColumnWidth = 2
.Columns("J:J").ColumnWidth = 7
.Columns("K:K").ColumnWidth = 1
.Columns("L:L").ColumnWidth = 9.9
.Columns("M:M").ColumnWidth = 2.5
.Rows(8).RowHeight = 20.1 '设定Excel各行的高度
Rows(9).RowHeight = 18
.Cells(1, 4) = " 购 销 合 同"
.Cells(1, 4).Font.Size = 20
.Cells(1, 4).Font.Bold = True
.Cells(3, 8) = " 编号:"
.Cells(4, 8) = " 日期:"
.Cells(5, 8) = " 项目名称:"
.Cells(3, 1) = "卖方:"
.Cells(4, 1) = "地址:"

.Cells(6, 1) = " 买卖双方同意订立下列条款进行购销XXXXXXXXXXX"
.Cells(8, 1) = "数 量"
.Cells(8, 3) = " 货 号"
.Cells(8, 4) = " 品 名"
.Cells(8, 5) = " 颜 色"
.Cells(8, 6) = " 含 量"
.Cells(8, 8) = "箱 数"
.Cells(8, 10) = " 单 价"
.Cells(8, 12) = " 金 额"
.Range(.Cells(8, 1), .Cells(8, 13)).Borders(xlEdgeTop).LineStyle = xlContinuous '刬线
.Range(.Cells(8, 1), .Cells(8, 13)).Borders(xlEdgeTop).Weight = xlThick
.Range(.Cells(8, 1), .Cells(8, 13)).Borders(xlEdgeBottom).LineStyle = xlContinuous
.Range(.Cells(8, 1), .Cells(8, 13)).Borders(xlEdgeBottom).Weight = xlThin
Dim CN As New ADODB.Connection
Dim ST As String
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
CN.Open "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\表名.mdb"

ST = "select * from 查询表"

rs.Open ST, CN, adOpenKeyset, adLockOptimistic
rs.MoveFirst

For K = 1 To rs.RecordCount '把查询表的内容写到Excel表中指定位置
.Cells(K + 8, 1) = rs("QTY")
.Cells(K + 8, 2) = rs("OUN")
.Cells(K + 8, 3) = rs("ITEM")
.Cells(K + 8, 4) = rs("CDES")
.Cells(K + 8, 5) = rs("COL")
.Cells(K + 8, 6) = rs("OPACK")
.Cells(K + 8, 7) = rs("OUN")
.Cells(K + 8, 8) = rs("CTN")
.Cells(K + 8, 10) = Left(rs("PRICE"), 6)
.Cells(K + 8, 10).NumberFormatLocal = "0.00_ "
.Cells(K + 8, 12) = Left(rs("AMT"), 9)
.Cells(K + 8, 12).NumberFormatLocal = "0.00_ "
rs.MoveNext
Next K
.Cells(K + 9, 10) = "合计:"
.Cells(K + 9, 13) = "元"
End With

rs.Close
Set rs = Nothing
Set Cn=nothing
oExcel.Visible = True
Set oBook = Nothing
Set oExcel = Nothing

End Sub本回答被提问者采纳

请问如何用vba将access的查询写入到excel表的指定区域?
ACCESS的VBA和EXCEL的VBA语言有差别,不能直接用ACCESS直接执行EXCEL的数据处理。但你可以形成一个ACCESS的TABLE,填写好数据后导出为EXCEL表格。另外,你可以利用ACCESS的引用表来引用EXCEL,这样就可以直接添加和修改EXCEL的数据,当然也可以用查询去修改数据。但这种情况不支持多用户操作,会出现意外错误。

利用VBA 将access中的所有数据导入到指定的excel中
1、选择菜单中【工具】→【引用】命令项,即可弹出对话框,在下拉列表框中查找并勾选项目“Microsoft ActiveX Data Objects 2.1 Library”,即可完成对ADO的引用。2、程序:与Access2007数据库连接语句 在“模块1”中声明公共变量“Public Conn As ADODB.Connection”,方便各个宏对数据库连接变量“Conn”...

怎么从access数据库中查询数据调到EXCEL单元格中
1.在工具栏中找到“外部数据”并单击。2.把创建好的数据表打开。打开方法:把所有表展开,选择需要导出的表并双击。3.选中导出一栏中的Excel并单击,弹出窗口如下图所示。4.设置好自定义文件名,选择文件格式为Excel工作薄。最后,选中“指定导出选项”的前两个按钮。5.单击确定之后,导出的Excel表格就...

如何将ACCESS数据库中的数据通过VBA程序提出 放入 EXCEL工作表中 求...
Sheet1.Cells(i, 4) = Rs(3)...备注:表里的值多的话继续添加 Rs.MoveNext Next Rs.Close Set Rs = Nothing End Sub 如果写到按钮单击事件,就把这些代码复制到按钮单击事件内(sub 和 end sub 不需要复制)

Excel怎么用VBA实现根据一个单元格内容从access数据库搜索数据并返回Ex...
Sub 查找()Set conn = CreateObject("adodb.connection")Set Rst = CreateObject("ADODB.recordset")conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="& "D:\/Database.accdb" ''后面是数据库路径 自己修改,看上去是07版本的,如果是03版本的将前面的字符串换成 "provider=Microsoft....

ACCESS 如何用VBA语言向数据库中填加数据?
在ACCESS中使用VBA语言向数据库添加数据,可以通过编写SQL语句和利用VBA的UPDATE功能实现。首先,你需要确保已经建立了ACCESS数据库并与VBA建立了链接。使用SQL语句添加数据的步骤如下:编写Insert语句,如"Insert into 表名(字段1,字段2) values('字段1内容','字段2内容')",将数据插入到指定的表中。

利用VBA从Access数据库中查找数据?
→ 指定宏:可以直接将宏绑定到控件上,然后进行编辑。进行编写代码前的准备工作:Visual Basic → 工具 → 引用:引用 Microsoft ActiveX Data Objects 2.x Library,否则运行代码会报“用户定义类型未定义”提示。Excel中用VBA根据输入的日期从Access数据库中提取相应的数据并插入到Excel表中:...

如何在VB里面实现导出ACCESS到EXCEL
20)Next xlSheet.Columns.AutoFit xlSheet.Rows(2).Font.Bold = True xlBook.SaveAs strFileName myExcel.Quit Set myExcel = Nothing ExportDetail = True Exit Function ErrAction:ExportDetail = False MsgBox "导出失败:" & Err.Description, vbCritical, "导出到EXCEL"End Function ...

如何用vb将Access超过10万条数据快速导入EXCEL?知道可以分多个sheet存...
myOpen1 = "select * into [Excel 8.0;database=" & ff & "].Sheet" & i & " from (" & myOpen & ") where ID >= " & arr(i)If i < ps Then myOpen1 = myOpen1 & " and ID<" & arr(i + 1)rs1.Open myOpen1 & " order by ID"Next BackupData = Err = 0 ...

Access中用vba实现窗体输入值记录到表中。
select * from 库存 where 产品ID='" & me.产品ID & "'"if Not rs.BOF and Not rs.EOF then CurrentDB.execute " update 库存 set 库存量=rs("库存量")+me.入库数量 where 产品ID='" & me.产品ID & "'"end if

相似回答