weixin_39025589 2021-05-09 14:58 采纳率: 33.3%
浏览 18

我这边做了两个表,用于输入数据但是显示查询值数目与目标字段的数目不同

Sub 用工作簿做数据库()
    If Application.Version = "12.0" Then
        vs = "microsoft.jet.oledb.4.0"
    Else
        vs = "Microsoft.ACE.OLEDB.12.0"
    End If
    Set conn = CreateObject("adodb.connection")
    conn.Open "provider=" & vs & ";extended properties=excel 8.0;data source=" & _
        ThisWorkbook.Path & "/数据库.xls"
    For i = 1 To 5
        If i = 1 Then
            a = "'" & Cells(i, "b") & "'"
        Else
            a = a & ",'" & Cells(i, "b") & "'"
        End If
    Next i
    conn.Execute "insert into [Sheet1$] values(" & a & ")"
    conn.Close
    Set conn = Nothing
    MsgBox "保存成功!"
End Sub
 

 

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-07-04 22:09
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题:请解释以上代码的作用和执行流程,并给出一个具体的案例和代码。 回答: 以上代码是一个VBA宏,用于将Excel工作簿作为数据库,将指定范围的数据插入到数据库的一个表中。 代码的执行流程如下:
    1. 判断当前Excel的版本,如果不是12.0,则使用Microsoft Jet OLEDB 4.0提供程序,否则使用Microsoft ACE OLEDB 12.0提供程序。
    2. 创建一个ADODB.Connection对象。
    3. 打开数据库连接,连接字符串是由提供程序和数据源路径组成。
    4. 通过循环遍历数据范围,并构建插入语句的数值部分。
    5. 执行插入语句,将数据插入到数据库的表中。
    6. 关闭数据库连接。
    7. 清除连接对象的引用。
    8. 弹出一个消息框,显示保存成功的消息。 以下是一个具体的案例和代码示例(假设数据库的结构和工作簿的数据范围已经设置好): 假设工作簿的数据范围是B1到B5的5个单元格,数据库文件名是"数据库.xls",数据库工作表是"Sheet1",表结构是两个字段(列):字段1(列名是列A),字段2(列名是列B)。
    9. 在VBA编辑器中,打开一个模块,并插入以上代码。
    10. 在Excel中运行宏(快捷键是Alt+F8),选择"用工作簿做数据库"并点击"运行"按钮。
    11. 执行完整个宏之后,数据库的"Sheet1"表格中会插入5条记录,每条记录的第一列是字段1的值(来自B1到B5单元格),第二列是字段2的值(来自B1到B5单元格)。
    12. 弹出一个消息框,显示保存成功的消息。 以上就是这个问题的解答。
    评论

报告相同问题?