乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > VBA利用<em>ADO</em>操作<em>excel</em>求教

VBA利用<em>ADO</em>操作<em>excel</em>求教

作者:乔山办公网日期:

返回目录:excel表格制作


简单的办法是,打开宏录制,操作数据连接,数据连接成功后,停止宏录制,然后查看宏的内容,里面应该会有你需要的VBA代码。

conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1'"
试试
先来个临时存储,再删除,再添加修改好的。具体代码如下:
'//sql语句导出到excel
'//参数:strSQL-传入的sql语句,strTitle-对应sql语句中每列的标题(例如:"编号|名称|规格")
Public Function SQLToExcel(ByVal strSQL As String, ByVal strTitle As String)
Dim rsTemp As ADODB.Recordset
Dim strExcelPath As String '//导出的excel文件路径
Dim arrTemp() As Variant
Dim arrTitle As Variant
Dim lngRows As Long
Dim lngCols As Long
Dim objExcelApp As Object
Dim objExcelWorkBook As Object
Dim objExcelWorkSheet As Object
Dim i As Long
Dim j As Long
On Error GoTo errHandle
If CheckExcel = False Then objInterCont.Tips "请确定已正确安装了Excel软件!": Exit Function
If Trim(strSQL) = "" Then Exit Function
Set rsTemp = mDB.Execute(strSQL)
If rsTemp.BOF And rsTemp.EOF Then
Set rsTemp = Nothing
objInterCont.Tips "没有要导出的数据,请重新选择查询条件!"
Exit Function
End If
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = False
With frmReport.dlgExport '//打开保存对话框
.FileName = ""
.DialogTitle = "请输入Excel文件名称"
.Filter = "Excel Files(*.xls)|*.xls" '//文件类型过虑为excel
.ShowSave
If Trim(.FileName) = "" Then Exit Function
strExcelPath = Trim(.FileName)
If Dir(Trim(.FileName)) <> "" Then '如果存在文件则提示
If MsgBox("文件已存在,是否替换原文件?", vbYesNo + vbQuestion, "提示") = vbYes Then
Kill Trim(.FileName)
Else
objExcelApp.Quit
Set objExcelApp = Nothing
Set rsTemp = Nothing
Exit Function
End If
End If
End With
Screen.MousePointer = 11
DoEvents
Err.Clear
lngRows = rsTemp.RecordCount
lngCols = rsTemp.Fields.Count
ReDim arrTemp(lngRows - 1, lngCols - 1)
i = 0
rsTemp.MoveFirst
Do While Not rsTemp.EOF
For j = 0 To lngCols - 1
arrTemp(i, j) = rsTemp.Fields(j).Value '//保存数据到数组e69da5e887aae799bee5baa6e997aee7ad94331
Next
rsTemp.MoveNext
i = i + 1
Loop
arrTitle = Split(strTitle, "|") '//保存标题到数组
Set objExcelWorkBook = objExcelApp.Workbooks.Add
Set objExcelWorkSheet = objExcelWorkBook.Worksheets(1) '写入第一个工作簿
With objExcelWorkSheet
.Range(.cells(1, 1), .cells(UBound(arrTemp, 1) + 2, UBound(arrTemp, 2) + 1)).NumberFormatLocal = "@"
.Range(.cells(1, 1), .cells(1, UBound(arrTitle, 1) + 1)).Font.Bold = True '//标题加粗
.Range(.cells(1, 1), .cells(1, UBound(arrTitle, 1) + 1)) = arrTitle '写入excel标题
.Range(.cells(2, 1), .cells(UBound(arrTemp, 1) + 2, UBound(arrTemp, 2) + 1)) = arrTemp '写入excel列内容
.cells.EntireColumn.AutoFit '//自动改变列大小
End With
objExcelWorkBook.SaveAs FileName:= _
strExcelPath, FileFormat:= _
1, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
objExcelApp.Quit

Set objExcelApp = Nothing
Set objExcelWorkBook = Nothing
Set objExcelWorkSheet = Nothing
Set rsTemp = Nothing
Erase arrTemp
Erase arrTitle
SQLToExcel = True
Screen.MousePointer = 0
objInterCont.Tips "导出数据成功!"
Exit Function
errHandle:
SQLToExcel = False
Set objExcelApp = Nothing
Set objExcelWorkBook = Nothing
Set objExcelWorkSheet = Nothing
Set rsTemp = Nothing
Erase arrTemp
Erase arrTitle
Screen.MousePointer = 0
If Err.Number = 75 Then
objInterCont.Tips "所覆盖的Excel文件属性只读,导出失败!"
Exit Function
End If
If Err.Number = 70 Then
objInterCont.Tips "所覆盖的Excel文件已打开,导出失败!"
Exit Function
End If
mobjErrLog.Record Err.Number, Err.Description, "DataOperator.cls", "SQLToExcel"
End Function

在日常生活中,通常有很多表格文件用Excel存放,访问Excel表格的方法很多,在Delphi中可以通过Servers中的ExcelApplication,ExcelWorkBook,ExcelWorkSheet等控件操纵Excel中的数据.但是我copy们无法用ADO操纵Excel文件中的Sheet,ADO控件会告诉你"[microsoft][OdbC Excel driver]Microsoft Jet 数据库引擎找不到对象'Sheet1'.请确定对象是否存在,并正确地写出它的名称和路径.
那么如何才能正确的操纵Excel呢???
首先用ADO连接Excel,至于怎么连接Excel我想不用我说了吧.
然后这个是个关键:打开Excel,先"插入"->"名称"->"定义",如图:

输入一个名称,如:OK,按"添加"按钮,然后指定引用位置,如图:

最后按"确定",然后存盘,这关键的一步就算完成了.
现在你在Delphi中就可以通过ADOQuery或ADOTable等自由操纵表名为"OK"的表了.

注意:1.你可以在一个Excel文件中定义多个名称,当多个表使用
2.此方法不能用于Excel中的Chart等元素

相关阅读

  • VBA利用<em>ADO</em>操作<em>excel</em>求教

  • 乔山办公网excel表格制作
  • 简单的办法是,打开宏录制,操作数据连接,数据连接成功后,停止宏录制,然后查看宏的内容,里面应该会有你需要的VBA代码。ado方式操作excel,1.从.怎样入..." src="/uploads/tu/397.jpg" s
  • <em>EXCEL</em> VBA <em>ADO</em> <

  • 乔山办公网excel表格制作
  • 开始录制宏,进行一次导入,停止录制,然后编辑刚才的代码,获得关键语句来自己使用。ADO操作excel求教" src="/uploads/tu/297.jpg" style="width: 400px; height: 267px;" />首先检查一下程序的最开始
  • 在VB中用<em>ADO</em>连接<em>EXCEL</em>文件&

  • 乔山办公网excel表格制作
  • 1、导入office11或12类2、创建EXCEL程序对象,新建或打开一个EXCEL工作簿,指定一个对象变量为Sheet1。3、把List1中各列的值分别放入数组内,并分别赋值给e799bee5baa6e997aee7ad94e59b9ee7ad94338上面
  • <em>ADO</em> 连接<em>EXCEL2010</em> 的数

  • 乔山办公网excel表格制作
  • 一、点击“文件”按钮二、点击“选百项度”按钮三、出问现“excel选项”对话框四、点击“自定义功能区” 五、在“答开发工具”前版面打上对号,点击确定完成设置。权 六、在功
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网