关于Excel报表生成的问题,总是说 range 的_application方法失败,为什么呀

tiandiqing 2004-11-21 08:51:30
Private Sub Command1_Click()
'建立一个ado对象连接
Dim dataconn As ADODB.Connection
Dim datarec As ADODB.Recordset
Dim strsql As String

'若数据库连接出错,转向connectionErr

' On Error GoTo connectionErr

Set dataconn = New ADODB.Connection

dataconn.Open "driver={sql server};server=localhost;uid=sa;pwd=4414;database=pubs"


'建立数据库的连接
'若recordset 建立出错,则转向recordsetErr

' On Error GoTo recordsetErr
Set datarec = New ADODB.Recordset

strsql = "select au_lname,au_fname,phone,address,city from authors"
datarec.Open strsql, dataconn, adOpenKeyset, adLockOptimistic

If datarec.EOF Then
Exit Sub
End If

Dim excelappx As Excel.Application
Dim rowcount As Long
Dim columncount As Long
Dim tmpvalue As Variant

rowcount = 3

' On Error GoTo excelErr

'建立excel应用
Set excelappx = CreateObject("excel.application")

With excelappx
.Visible = True
'新增workbook
.Workbooks.Add (App.Path & "\authors.xlt")

'添加数据

Do Until datarec.EOF
'填充每一列

For columncount = 1 To datarec.Fields.Count
'定位到单元格
'//////就是下面的这句话出错!

excelappx.Range(excelappx.Cells(columncount, rowcount)).Select

'填充数据
excelappx.ActiveCell.Value = datarec.Fields(columncount - 1).Value

Next columncount

datarec.MoveNext
rowcount = rowcount + 1
Loop

excelappx.Range(excelappx.Cells(3, 1), excelappx.Cells(rowcount - 1, columncount - 1)).Borders.LineStyle = xlContinuous

'打印玉兰
'excelappx.Worksheets .PrintPreview

excelappx.DisplayAlerts = False

excelappx.Quit

End With
Exit Sub

connectionErr:
MsgBox "数据库连接错误!"
Exit Sub

recordsetErr:
MsgBox "记录集错误!"
dataconn.Close
Exit Sub

excelErr:
MsgBox "excel报表有错误!", Err.Description, vbCritical, "出错"
If Not excelappx Is Nothing Then excelappx.Quit
datarec.Close
dataconn.Close
Exit Sub
End Sub

...全文
147 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihonggen0 2004-11-22
  • 打赏
  • 举报
回复
当然不对,是一个范围,要指定两个单元格的


ExcelApp.Range(ExcelApp.Cells(1, 1), ExcelApp.Cells(1, 1)).Select


excelappx.Range(excelappx.Cells(columncount, rowcount),excelappx.Cells(columncount, rowcount)).Select
tiandiqing 2004-11-22
  • 打赏
  • 举报
回复
不对,填充摸班时候,不对!
ryq0000 2004-11-22
  • 打赏
  • 举报
回复
你要加入EXCEL對象才可以啊,我以前也出現過這樣的錯誤,加上就可以了,,,在引用項目中添加即可!!
tiandiqing 2004-11-22
  • 打赏
  • 举报
回复
我回去调试一下,通过马上给分!!!!
wsyyq 2004-11-21
  • 打赏
  • 举报
回复
up
rolleyuan 2004-11-21
  • 打赏
  • 举报
回复
up
贡献给热爱学习的人 (示例中含有详细的代码及明) 1、生成默认的基本对话框工程,工程名为ProjectX。 2、添加FlexGrid1控件:Ctrl+W打开类向导,工程->增加到工程->Components and Contols->Registered ActiveX Controls->Microsoft FlexGrid Control ,version6.0 ->Insert 3、为IDC_DATAGRID1关联变量m_FlexGrid1 4、Ctrl+W打开类向导,新建一个类,选择从Type Library添加。如果是Office 2003,添加的是Office安装路径下的Excel.exe (在Office 2000环境下添加的应该是Excel9.OLB) 。在弹出的Confirm Classes里选择_Application,Workbooks,_Workbook,Worksheets ,_Worksheet,Range ,Font 这几个类,并确定新生成的.CPP和.h文件的名称为Excel.cpp和Excel.h,然后确定。 5、添加类CColorButton:Ctrl+W打开类向导->点击Member Variables->Add Class->new->name:CColorButton Base Class:CButton->Ok 6、添加类CColorButton的成员函数DrawIten和PreSubclssWindow 7、添加ColorButton.h和ColorButton.cpp的实现代码 8、"导出Excel"按钮关联类型为CColorButton的变量(Vaiable Type:CColorButton):m_btn1 9、右键点击ProjectX resources->引入:文件类型选择所有文件,依次引入5个按钮位图,程序将自动添加5个位图资源,然后设置位图资源的属性。 10、在stdafx.h中添加导入ADO库 11、在ProjectXDlg.h中添加智能指针变量等。 12、在ProjectXDlg.cpp中添加头文件引用:#include "Excel.h" 13、在ProjectXDlg.cpp的OnInitDialog()中添加初始化代码等。 14、双击导出Excel按钮,添加单击响应函数及功能代码。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧