VBA将Excel数据导入到数据库

1、如果Excel中的数据是标志格式的,即标题栏+数据这种类型,那么导入数据库将非常方便,示例代码如下:

'函数:导入
Private Function F_K_Import() As Boolean
    Dim cnCurrent As ADODB.Connection
    Dim rcdTemp As ADODB.Recordset
    Dim rcdChecker As ADODB.Recordset
    Dim strSql As String
    Dim ExcelApp
    Dim ExcelWorkBook
    Dim strWorkSheetName As String

On Error GoTo ErrHandle
    F_K_Import= False
    
    DoCmd.SetWarnings False
    
    Set ExcelApp = CreateObject("Excel.Application")
    ExcelApp.Visible = False
    
    Set ExcelWorkBook = ExcelApp.WorkBooks.Open(Trim(Me.txt_Import.Value))
    strWorkSheetName = ExcelWorkBook.WorkSheets(1).Name
    ExcelWorkBook.Close
    
    Set ExcelWorkBook = Nothing
    Set ExcelApp = Nothing

    strSql = "SELECT * INTO [T_K] FROM [Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & Trim(Me.txt_Import.Value) & "].[" & strWorkSheetName & "$]"
    DoCmd.RunSQL strSql
    
    DoCmd.SetWarnings True
    
    F_K_Import= True
On Error GoTo 0
    Exit Function

ErrHandle:
    DoCmd.SetWarnings True
    MsgBox Error(Err), vbExclamation
End Function

2、导入非标准格式的Excel时,基本方法是使用循环去读取Excel中的数据,示例代码如下:

	Do While (strTradeNo <> "")
          strTradeDate = ExcelWorkSheet.Cells(intRow, 2).Value
          strProductVariety = ExcelWorkSheet.Cells(intRow, 3).Value
          strValueDate = ExcelWorkSheet.Cells(intRow, 4).Value
          strFixedRatePayer = ExcelWorkSheet.Cells(intRow, 5).Value
          strFixedRate = ExcelWorkSheet.Cells(intRow, 6).Value
          strFloatRatePayer = ExcelWorkSheet.Cells(intRow, 7).Value
          strBPs = ExcelWorkSheet.Cells(intRow, 8).Value

          strSql = "INSERT INTO [T_LiquidationNotice](Ccy,CustomerName,SubmitDate,ReportDate,TradeNo,TradeDate,ProductVariety,ValueDate,FixedRatePayer,FixedRate,FloatRatePayer,BPs) values ( '" & strCCY & "','" & strCustomerName & "',#" & strSubmitDate & "# ,#" & strReportDate & "#,'" & strTradeNo & "',#" & strTradeDate & "#,'" & strProductVariety & "',#" & strValueDate & "#,'" & strFixedRatePayer & "'," & strFixedRate & ",'" & strFloatRatePayer & "'," & strBPs & ")"
          DoCmd.RunSQL strSql
          intRow = intRow + 1
          strTradeNo = ExcelWorkSheet.Cells(intRow, 1).Value
       Loop


  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 VBAExcel 数据导入 Access 数据库的示例代码: ``` Sub ImportExcelToAccess() Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim strPath As String Dim xlApp As Excel.Application Dim xlWorkbook As Excel.Workbook Dim xlWorksheet As Excel.Worksheet Dim lngRow As Long Dim lngCol As Long '设置 Access 数据库路径和文件名 strPath = "C:\MyDatabase.accdb" '创建 Excel 应用程序对象 Set xlApp = New Excel.Application '打开 Excel 文件 Set xlWorkbook = xlApp.Workbooks.Open("C:\MyExcelFile.xlsx") '选择要导入Excel 工作 Set xlWorksheet = xlWorkbook.Worksheets("Sheet1") '连接 Access 数据库 Set db = OpenDatabase(strPath) '创建新的记录集对象 Set rs = db.OpenRecordset("MyTable", dbOpenDynaset) '循环遍历 Excel 行和列,并将数据插入到 Access 数据库中 For lngRow = 2 To xlWorksheet.UsedRange.Rows.Count '构造 SQL 语句 strSQL = "INSERT INTO MyTable (Field1, Field2, Field3) VALUES (" For lngCol = 1 To xlWorksheet.UsedRange.Columns.Count strSQL = strSQL & "'" & xlWorksheet.Cells(lngRow, lngCol).Value & "', " Next lngCol strSQL = Left(strSQL, Len(strSQL) - 2) & ")" '执行 SQL 语句 db.Execute strSQL Next lngRow '关闭记录集和数据库连接 rs.Close db.Close '关闭 Excel 文件和应用程序 xlWorkbook.Close xlApp.Quit '释放对象引用 Set rs = Nothing Set db = Nothing Set xlWorksheet = Nothing Set xlWorkbook = Nothing Set xlApp = Nothing End Sub ``` 在此示例中,我们假设 Excel 文件中的数据位于第一个工作上,并且第一行是列标题。我们将数据插入到名为 "MyTable" 的 Access 中,该包含三个字段:Field1、Field2 和 Field3。您需要将代码中的路径和和字段名称替换为您自己的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值