Excel 是一个非常优秀的报表制作软件,用VBA可以控制其生成优秀的报表,本文通过添加查询语句的方法,即用Excel中的获取外部数据的功能将数据很快地从一个查询语句中捕获到EXCEL中,比起往每个CELL里写数据的方法提高许多倍。 
将下文加入到一个模块中,屏幕中调用如下ExporToExcel("select * from table")则实现将其导出到EXCEL中 
Public Function ExporToExcel(strOpen As String) '********************************************************* '* 名称:ExporToExcel '* 功能:导出数据到EXCEL '* 用法:ExporToExcel(sql查询字符串) '********************************************************* Dim Rs_Data As New ADODB.Recordset Dim Irowcount As Integer Dim Icolcount As Integer          Dim xlApp As New Excel.Application     Dim xlBook As Excel.Workbook     Dim xlSheet As Excel.Worksheet     Dim xlQuery As Excel.QueryTable          With Rs_Data         If .State = adStateOpen Then             .Close         End If         .ActiveConnection = Cn         .CursorLocation = adUseClient         .CursorType = adOpenStatic         .LockType = adLockReadOnly         .Source = strOpen         .Open     End With     With Rs_Data         If .RecordCount < 1 Then             MsgBox ("没有记录!")             Exit Function         End If         '记录总数         Irowcount = .RecordCount         '字段总数         Icolcount = .Fields.Count     End With          Set xlApp = CreateObject("Excel.Application")     Set xlBook = Nothing     Set xlSheet = Nothing     Set xlBook = xlApp.Workbooks().Add     Set xlSheet = xlBook.Worksheets("sheet1")     xlApp.Visible = True          '添加查询语句,导入EXCEL数据     Set xlQuery = xlSheet.QueryTables.Add(Rs_Data, xlSheet.Range("a1"))          With xlQuery         .FieldNames = True         .RowNumbers = False         .FillAdjacentFormulas = False         .PreserveFormatting = True         .RefreshOnFileOpen = False         .BackgroundQuery = True         .RefreshStyle = xlInsertDeleteCells         .SavePassword = True         .SaveData = True         .AdjustColumnWidth = True         .RefreshPeriod = 0         .PreserveColumnInfo = True     End With          xlQuery.FieldNames = True '显示字段名     xlQuery.Refresh          With xlSheet         .Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Name = "黑体"         '设标题为黑体字         .Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Bold = True         '标题字体加粗         .Range(.Cells(1, 1), .Cells(Irowcount + 1, Icolcount)).Borders.LineStyle = xlContinuous         '设表格边框样式     End With          With xlSheet.PageSetup         .LeftHeader = "" & Chr(10) & "&""楷体_GB2312,常规""&10公司名称:"   ' & Gsmc         .CenterHeader = "&""楷体_GB2312,常规""公司人员情况表&""宋体,常规""" & Chr(10) & "&""楷体_GB2312,常规""&10日 期:"         .RightHeader = "" & Chr(10) & "&""楷体_GB2312,常规""&10单位:"         .LeftFooter = "&""楷体_GB2312,常规""&10制表人:"         .CenterFooter = "&""楷体_GB2312,常规""&10制表日期:"         .RightFooter = "&""楷体_GB2312,常规""&10第&P页 共&N页"     End With          xlApp.Application.Visible = True     Set xlApp = Nothing  '"交还控制给Excel     Set xlBook = Nothing     Set xlSheet = Nothing 
End Function 
 注:须在程序中引用'Microsoft Excel 9.0 Object Library'和ADO对象,机器必装Excel 2000 
本程序在Windows 98/2000,VB 6 下运行通过。  
 
  |