程序如下,是我看了别人的例程,在不太懂的情况下编的,出现的问题在程序后.
Private Sub cmdSaveAs_Click() Dim i As Integer
Dim j As Integer
Dim rCount As Long
Dim cn As New ADODB.Connection
Dim Cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim strConnect As String
Dim StrSql As String
StrSql = "select * from parameter_add_material " Set cn = New ADODB.Connection
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\db\furnace.mdb"
cn.ConnectionString = strConnect
cn.Open
With Cmd
.ActiveConnection = cn
.CommandType = adCmdText
.CommandText = StrSql
.Parameters.Refresh
End With With rs
.CursorLocation = adOpenStatic
.CursorType = adOpenStatic
.LockType = adLockReadOnly
.Open Cmd
End With
'-------------------
Set ExcelSheet = CreateObject("Excel.Application")
ExcelSheet.Workbooks.Add
If rs.RecordCount > 0 Then
For i = 0 To rs.Fields.Count - 1
ExcelSheet.Worksheets(1).Cells(1, i + 1).Value = rs(i).Name
Next
rs.MoveLast
rs.MoveFirst
rCount = rs.RecordCount
i = 0
Do While Not rs.EOF
For j = 0 To rs.Fields.Count - 1
If rs(j).Type < 11 Then
ExcelSheet.Cells(i + 2, j + 1).Value = rs(j)
End If
Next
rs.MoveNext
i = i + 1
Loop
ExcelSheet.SaveWorkspace
ExcelSheet.Application.Quit
End If
Set ExcelSheet = Nothing
End Sub点击存储键后会提示:
"在当前位置发现已经存在名为“RESUME.XLW”的文件。是否替换现有的“RESUME.XLW"?
点击“是”,完成了存储操作,点击否或者取消,则提示:
实时错误‘1004’:
对象'SaveWorkspace'的方法'_Application'失败并且偶尔还会出现:
由于其他应用程序忙,不能执行该操作,选择“切换到”按钮以激活忙的应用程序并纠正其错误 “切换到”,重试,取消(不能操作)最后,如果运行这个程序3次,分别存为book1,xls,book2.xls,book3.xls,在关机时候(win2000),还会再提示一遍,说这三个文件的内容已更改,是否存盘?毛病出在哪里啊?高手来救命...
Private Sub cmdSaveAs_Click() Dim i As Integer
Dim j As Integer
Dim rCount As Long
Dim cn As New ADODB.Connection
Dim Cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim strConnect As String
Dim StrSql As String
StrSql = "select * from parameter_add_material " Set cn = New ADODB.Connection
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\db\furnace.mdb"
cn.ConnectionString = strConnect
cn.Open
With Cmd
.ActiveConnection = cn
.CommandType = adCmdText
.CommandText = StrSql
.Parameters.Refresh
End With With rs
.CursorLocation = adOpenStatic
.CursorType = adOpenStatic
.LockType = adLockReadOnly
.Open Cmd
End With
'-------------------
Set ExcelSheet = CreateObject("Excel.Application")
ExcelSheet.Workbooks.Add
If rs.RecordCount > 0 Then
For i = 0 To rs.Fields.Count - 1
ExcelSheet.Worksheets(1).Cells(1, i + 1).Value = rs(i).Name
Next
rs.MoveLast
rs.MoveFirst
rCount = rs.RecordCount
i = 0
Do While Not rs.EOF
For j = 0 To rs.Fields.Count - 1
If rs(j).Type < 11 Then
ExcelSheet.Cells(i + 2, j + 1).Value = rs(j)
End If
Next
rs.MoveNext
i = i + 1
Loop
ExcelSheet.SaveWorkspace
ExcelSheet.Application.Quit
End If
Set ExcelSheet = Nothing
End Sub点击存储键后会提示:
"在当前位置发现已经存在名为“RESUME.XLW”的文件。是否替换现有的“RESUME.XLW"?
点击“是”,完成了存储操作,点击否或者取消,则提示:
实时错误‘1004’:
对象'SaveWorkspace'的方法'_Application'失败并且偶尔还会出现:
由于其他应用程序忙,不能执行该操作,选择“切换到”按钮以激活忙的应用程序并纠正其错误 “切换到”,重试,取消(不能操作)最后,如果运行这个程序3次,分别存为book1,xls,book2.xls,book3.xls,在关机时候(win2000),还会再提示一遍,说这三个文件的内容已更改,是否存盘?毛病出在哪里啊?高手来救命...
好像就这些了:),我正在看其他人的相关文章,但是我的错在哪里,毛病那么多,呵呵,还是想搞清楚:)
///对象'SaveWorkspace'的方法'_Application'失败////
要保存的文件名没得到,当然出错
Loop
On Erroe resume Next '加上这句
ExcelSheet.SaveWorkspace '不明白为何要保存为工作区
ExcelSheet.Application.Quit
End If/////由于其他应用程序忙,不能执行该操作,选择“切换到”按钮以激活忙的应用程序并纠正其错误 “切换到”,重试,取消(不能操作)//////
VB在对调用对象进行操作过程中,主程序被挂起。//////最后,如果运行这个程序3次,分别存为book1,xls,book2.xls,book3.xls,在关机时候(win2000),还会再提示一遍,说这三个文件的内容已更改,是否存盘?////
你在调试时,由于出错ExcelSheet.Application.Quit这句没执行到,当然出现多个EXCEL没关。
如下更快:
'-------------------
Set ExcelApp = CreateObject("Excel.Application")
set ExcelBook = ExcelApp.Workbooks.Add
set ExcelSheet = ExcelBook.Sheets(1)
ExcelSheet.QueryTables.Add rs , ExcelSheet.Range("A1")
ExcelBook.Save
ExcelApp.Quit
Set ExcelApp = Nothing
Set ExcelBook = Nothing
Set ExcelSheet = Nothing
End Sub