一个困扰多日的问题
请教各位老师我把代码封装到DLL中从操作表中取数据,可以取到,但是运行到最后却出错,麻烦老师们帮忙看看,见附件 [ 本帖最后由 wangjiangtin 于 2011-1-25 14:56 编辑 ]
程序代码:Private Sub Command1_Click()
On Error Resume Next
Dim SQL As String
Dim cnn As Object
Dim ADOX As Object, TableName As String
Dim I As Integer
Dim falg As Integer
Dim xz
Set xlapp = GetObject(, "Excel.Application")
If daorushuju.List1.ListIndex = -1 Then
MsgBox "请选中要导出的报表!", vbInformation, "导出系统提示"
Exit Sub
End If
With daorushuju.List1
For I = 0 To .ListCount - 1 '在条目中循环
If .Selected(I) Then
xz = .List(I) '将选中的条目给变量sht
'---------------------导入数据过程代码------------------------------------------------------------------------
Set cnn = CreateObject("adodb.connection")
cnn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=no;imex=1;';data source=" & MyFileName
SQL = "select * from [" & xz & "$]"
If InStr(xz, "$") > 0 Then SQL = "select * from [" & xz & "]"
' Sheets("wang").Range("a4").CopyFromRecordset cnn.Execute(SQL)
With xlapp.ActiveWorkbook.ActiveSheet
' .Cells.Clear '清除全部
.Rows("4:65536").Delete '删除全部行
' .Range("4:65536").ClearContents '清除全部功能同上
.Range("a4").CopyFromRecordset cnn.Execute(SQL) '写入数据
' .UsedRange.Borders.LineStyle = xlContinuous '添加格线
X = .UsedRange.Columns.Count '使用区域的列数
xx = .UsedRange.Rows.Count '使用区域的行数
.Range(Cells(4, 1), Cells(xx + 3, X)).Borders.LineStyle = xlContinuous '添加格线==+3是因为从a4写入的数据--Cells(4, 1)=a4
.Range(Cells(4, 1), Cells(xx + 3, X)).Font.Size = 10 '第4行以下设置为10号字体
End With
cnn.Close
Set cnn = Nothing
'-------------------------------------------------------------------------------------------------------------
End If
Next
End With
Set xlapp = Nothing '清除定义的对象为空 xlapp.ActiveWorkbook.ActiveSheet
Unload Me
End Sub
