标题:我用VB 将数据库数据存入EXCEL为什么不能保存?
只看楼主
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:324
专家分:435
注 册:2012-1-29
结帖率:88.24%
 问题点数:0 回复次数:1 
我用VB 将数据库数据存入EXCEL为什么不能保存?
我用VB 将数据库数据存入EXCEL为什么不能保存?
excel里用VBA写了程序的,帮看看什么问题,
在表格中直接写入数据点保存也不行,请熟悉EXCEL表格的帮我看看,
是不是VBA中有什么设定,该如何处理?
如果是EXCEL表格有限制要添加什么句子?
测试窗体添加控件:CommonDialog1一个
                 DTPicker1日期控件2个
                 command一个

导入数据库的句子我是这样写的
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Private Sub Form_Load()
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
End Sub

Private Sub Command1_Click()
导入表格
End Sub

Sub 导入表格()
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\AAA.mdb;Persist Security Info=False;Jet OLEDB:Database Password=1234;"
    sql = "select * from 维修记录 where 维修日期 between #" & DTPicker1.value & "# and #" & DTPicker2.value & "# order by 维修日期 asc"
    rs.Open sql, cn, 3, 3
    If rs.RecordCount = 0 Then
       MsgBox "没有数据记录", 48, "提示:"
       Exit Sub
    End If
    '上面是先查询数据库数据,按时间查询符合条件的数据
    '----------------------------------
    '导出到Excel文件中
   
    Dim r As Long                    
    Dim C As Long                    
    Dim xApp As Excel.Application '应用
    Dim xBook As Excel.Workbook    '工作薄
    Dim xSheet As Excel.Worksheet   '工作表
    Dim sCellValue As String
’下面是打开选择需要存储的目标EXCEL文件
    With CommonDialog1
       .InitDir = "C:\ "
       .FileName = " "
       .DialogTitle = "请选择Excel文件"
       .Flags = 512
       .MaxFileSize = 2048
       .CancelError = True
       .Filter = "文件(*.xls;*.xlsx)|*.xls;*.xlsx "
       .Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer
       .ShowOpen
       If Len(CommonDialog1.FileName) = 0 Then Exit Sub '如果没有选择文件那么结束
    End With
'下面是弹出保存提示,并显示保存路径和文件名
    myval = MsgBox("确定导出数据库数据到" & CommonDialog1.FileName & "中吗?", vbYesNo, "提示")
         If myval = vbYes Then
    r = rs.Fields.Count '列的数量,也就是字段数量
    C = rs.RecordCount '记录数量,也就是行数。
    Set xApp = CreateObject("Excel.Application")
    Set xBook = xApp.Workbooks.Open(CommonDialog1.FileName)’存储目标文件
    Set xSheet = xBook.Worksheets("故障停机记录")’第一张表
    '------------------------------------------------
    '查找最后一个有数据的单元格,然后+1,下移一行
    ' xSheet.usedrange.rows.count  表格的行数
    ' xSheet.Cells(w, 4) 定位单元格
    nt = 0
    For w = 1 To xSheet.UsedRange.Rows.Count'按EXCEL中总的数据行数循环
        If xSheet.Cells(w, 4) <> "" Then  '如果表中指定单元格不是空值
           nt = w + 1                     ’就将NT的值设为所循环到的那一行数值用来确定有记录的行是哪一行
        Else
           Exit For                       '循环到空值就退出循环
        End If
    Next
    '------------------------------------------------
    '开始
     '先写列头,将数据库中的字段名写到表中
    For J = 0 To r - 1                               '设置循环行数=总数r少一行
        sCellValue = rs.Fields(J).Name               '设置sCellValue值为当前一列的字段名
        xSheet.Cells(nt + 1, J + 1) = sCellValue     '写入表中相应单元格
    Next
   '-------------------------------------------------
'下面开始在EXCEL写入数据库内容
    For J = 1 To C                                        '根据查找到多少条记录C来判断循环多少次
        For I = 0 To r - 1                                '列数
            sCellValue = rs.Fields(I) & ""                '设置sCellValue值为当前一列的字段名
            xSheet.Cells(nt + J + 1, I + 1) = sCellValue  '写入表中相应单元格
        Next I
        rs.MoveNext                                       '移动到下一行数据记录
    Next J
    '------------------------------------------------
    '自动调整列
    For K = 1 To r
      xSheet.Columns(K).AutoFit
    Next
    xBook.Save                '保存***********************这里出错了,保存不了用xBook.SaveAs不是我要的结果
    xBook.Close (True)        '按内容变化关闭
    Set xBook = Nothing
    Set xApp = Nothing
    Set xSheet = Nothing
    MsgBox "导出成功!", 48, "提示"
    End If
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
    Exit Sub
end sub
123.zip (223.43 KB)


[ 本帖最后由 wxflw 于 2013-6-20 07:21 编辑 ]
搜索更多相关主题的帖子: 数据库数据 command excel EXCEL 
2013-06-19 22:01
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:324
专家分:435
注 册:2012-1-29
得分:0 
????????????

学习--------------学习-------------------学习--------------------!!
2013-06-21 18:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-415585-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.479907 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved