vb做的excle导出,为什么每次都没有文件保存下来
前面是某位大神给的代码,我想把他改下,加个commondialog控件,添加个文件保存位置和默认名的,但是改了后文件直接没有保存。程序代码:
Public access As New ADODB.Connection Public res As New ADODB.Recordset Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Private Sub Command1_Click() Dim str As String Dim sql As String str = Text1.Text res.Close sql = "SELECT * FROM ziliao where 商品名 like '%" & Text1 & "%' ORDER BY 编号" res.Open sql, access, 1, 3 Set DataGrid1.DataSource = res res.Close End Sub Private Sub Command2_Click() Dim Irow, Icol As Integer Dim Irowcount, Icolcount As Integer Dim Fieldlen() As Integer Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) sql = "SELECT * FROM ziliao ORDER BY 编号" res.Open sql, access, 1, 3 Set DataGrid1.DataSource = res With res Irowcount = .RecordCount '记录总数 Icolcount = .Fields.Count '字段总数 ReDim Fieldlen(Icolcount) As Integer res.MoveFirst For Irow = 1 To Irowcount + 1 For Icol = 1 To Icolcount Select Case Irow Case 1 '在Excel中的第一行加标题 xlSheet.Cells(Irow, Icol).Value = RTrim(.Fields(Icol - 1).Name) Case 2 '将数组FIELDLEN()存为第一条记录的字段长 If IsNull(.Fields(Icol - 1)) = True Then Fieldlen(Icol) = LenB(RTrim(.Fields(Icol - 1).Name)) Else aa = RTrim(.Fields(Icol - 1).Name) Fieldlen(Icol) = LenB(aa) End If xlSheet.Columns(Icol).ColumnWidth = Fieldlen(Icol) xlSheet.Cells(Irow, Icol).Value = RTrim(.Fields(Icol - 1)) Case Else Fieldlen1 = LenB(.Fields(Icol - 1)) If Fieldlen(Icol) < Fieldlen1 Then xlSheet.Columns(Icol).ColumnWidth = Fieldlen1 Fieldlen(Icol) = Fieldlen1 Else xlSheet.Columns(Icol).ColumnWidth = Fieldlen(Icol) End If xlSheet.Cells(Irow, Icol).Value = .Fields(Icol - 1) End Select Next If Irow <> 1 Then If Not .EOF Then .MoveNext End If Next ' With xlSheet ' .Range(.Cells(1, 1), .Cells(1, Icol - 1)).Font.Name = "黑体" ' .Range(.Cells(1, 1), .Cells(1, Icol - 1)).Font.Bold = True ' .Range(.Cells(1, 1), .Cells(Irow, Icol - 1)).Borders.LineStyle = xlContinuous ' End With 'xlApp.Visible = True Dim aaa aaa = MsgBox("是否保存该Excel表?", vbYesNo, "提示窗口") If aaa = vbYes Then CommonDialog1.FileName = "报表" CommonDialog1.Filter = "Xls文件(*.Xls)|*.Xls|所有文件(*.*)|*.*" CommonDialog1.ShowSave On Error GoTo ErrSave NewSheet.SaveAs CommonDialog1.FileName ' MsgBox "保存成功" newxls.Quit ErrSave: Exit Sub MsgBox Err.Description, , "提示窗口" End If Set xlApp = Nothing End With End Sub Private Sub Form_Load() m = 0 If Dir(App.Path + "\资料.mdb") <> "" Then access.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\资料.mdb;Persist Security Info=False;Jet OLEDB:Database Password=123" access.Open Set res.ActiveConnection = access '设置rs1的ActiveConnection属性,指定与其关联的数据库连接 res.CursorLocation = adUseClient '设置游标类型 res.CursorType = adOpenDynamic '设置动态游标 res.Open "SELECT * FROM ziliao ORDER BY 编号", access, 1, 3 '打开记录集,将从表Departments中读取的结果集保存到记录集res中 DataGrid1.Refresh '刷新表格 Set DataGrid1.DataSource = res '将DataSource连接到数据库 res.MoveFirst Else MsgBox "找不到数据库" End If res.Close End Sub