我需要使用 VBA 将数据从 Excel 导入到 SQL Server

2023-12-12

我正在尝试将数据从我的 PC 上的另一个 Excel 工作簿导入到 SQL Server。我尝试使用这段代码,但它不起作用:

Sub insertion()
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sConnString As String
    Dim rsstring As String
    Dim m, nrows As Integer
    Dim loRH As Excel.ListObject

    Workbooks("test-vba.xls").Activate

    *connection*
    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset

    conn.Open sConnString
    MsgBox "Start"

    Set loRH = wkb.ListObjects(1)
    loRH.ListColumns(1).DataBodyRange.Select

    MsgBox "Start"
    nrows = WorksheetFunction.CountA(Selection)

    For m = 0 To nrows - 1
        rsstring = "insert into MPN_Materials values(MPN Material, Material 
description, Int. material no.,  MPN,  Manufact.,  Matl Group, Material 
Description, Last Chg., BUn) values" _
        & "("loRH.DataBodyRange.Cells(m + 1, 1) & "', 
        & loRH.DataBodyRange.Cells(m + 1, 2) & ", " _
        & loRH.DataBodyRange.Cells(m + 1, 3) & ", " _
        & loRH.DataBodyRange.Cells(m + 1, 4) & ", " _
        & loRH.DataBodyRange.Cells(m + 1, 5) & ", " _
        & loRH.DataBodyRange.Cells(m + 1, 6) & ", " _
        & loRH.DataBodyRange.Cells(m + 1, 7) & ", " _
        & loRH.DataBodyRange.Cells(m + 1, 8) & ", " _
        & loRH.DataBodyRange.Cells(m + 1, 9) & "); "

“不起作用”是什么意思?你会得到什么样的错误?也许下面的解决方案之一会有所帮助。 。 。

Sub UpdateTable()

    Dim cnn As Object
    Dim wbkOpen As Workbook
    Dim objfl As Variant
    Dim rngName As Range
    Workbooks.Open "C:\your_path_here\Excel_to_SQL_Server.xls"
    Set wbkOpen = ActiveWorkbook
    Sheets("Sheet1").Select
    Set rngName = Range(Range("A1"), Range("A1").End(xlToLeft).End(xlDown))
    rngName.Name = "TempRange"
    strFileName = wbkOpen.FullName
    Set cnn = CreateObject("ADODB.Connection")
    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFileName & ";Extended Properties=""Excel 12.0 Xml;HDR=Yes"";"
    nSQL = "INSERT INTO [odbc;Driver={SQL Server};Server=Server_Name;Database=[Your_Database].[dbo].[TBL]]"
    nJOIN = " SELECT * from [TempRange]"
    cnn.Execute nSQL & nJOIN
    MsgBox "Uploaded Successfully"
    wbkOpen.Close
    Set wbkOpen = Nothing

End Sub

Sub InsertInto()

'Declare some variables
Dim cnn As adodb.Connection
Dim cmd As adodb.Command
Dim strSQL As String

'Create a new Connection object
Set cnn = New adodb.Connection

'Set the connection string
cnn.ConnectionString = "Server_Name;Database=Your_Database;Trusted_Connection=True;"

'Create a new Command object
Set cmd = New adodb.Command

'Open the connection
cnn.Open
'Associate the command with the connection
cmd.ActiveConnection = cnn

'Tell the Command we are giving it a bit of SQL to run, not a stored procedure
cmd.CommandType = adCmdText

'Create the SQL
strSQL = "UPDATE TBL SET JOIN_DT = 2013-01-13 WHERE EMPID = 2"

'Pass the SQL to the Command object
cmd.CommandText = strSQL

'Open the Connection to the database
cnn.Open

'Execute the bit of SQL to update the database
cmd.Execute

'Close the connection again
cnn.Close

'Remove the objects
Set cmd = Nothing
Set cnn = Nothing

End Sub

作为替代方案,请考虑以下链接之一。

http://www.ozgrid.com/forum/showthread.php?t=169953

http://stackoverflow.com/questions/2567150/excel-vba-sql-data

http://msgroups.net/microsoft.public.excel.programming/vba-to-export-large-tables/61433

http://www.codeproject.com/Questions/475817/Howplustoplusupdateplussqlplusserverplusdataplusfr

http://www.excelguru.ca/forums/showthread.php?992-SQL-Select-Insert-Update-queries-from-Excel-vba

http://www.mrexcel.com/forum/excel-questions/617303-updating-records-access-table-using-excel-visual-basic-applications.html

http://www.excelforum.com/excel-programming-vba-macros/501147-how-to-use-vba-to-update-a-sql-server-table-from-a-spreadsheet.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我需要使用 VBA 将数据从 Excel 导入到 SQL Server 的相关文章

  • 返回日期为 null 作为 t-sql 中的最大值

    我有这张桌子 ID Date Value 3241 9 17 12 5 3241 9 16 12 100 3241 9 15 12 20 4355 9 16 12 12 4355 9 15 12 132 4355 9 14 12 4 100
  • 如何解锁和锁定 Excel 单元格以运行宏

    我有一个电子表格 有两个按钮 从数据库检索记录 另一个按钮用于将更改从 Excel 上传到数据库 从数据库检索记录的宏如下 现在 在检索记录后 我希望用户仅编辑某些列 此处为从一月到场景的列 以便用户在更新这些单元格后可以单击更新按钮将更改
  • VBA 错误代码需要对象 --- 经过三次检查但仍然不起作用

    下面的注释行继续向我返回错误Run Time Error 424 Object Required 作为自学课程的一部分 我正在研究此问题 并且我已经进行了三次检查 以确保我正确输入代码并且仍然返回此错误 我尝试在此处查看此错误的其他示例 但
  • 使用 VBA 和 Selenium 驱动网站,pt2

    In 这个问题 https stackoverflow com questions 43808508 driving a website using vba and selenium在推动我的 VBA Selenium 项目前进方面 我收到
  • 我怎样才能获得特定的结果块?

    是否可以检索特定范围的结果 我知道如何执行 TOP x 但我将检索的结果太大并且会超时 我希望能够选择前 10 000 个结果 然后选择接下来的 10 000 个结果 依此类推 这可能吗 WITH Q AS SELECT ROW NUMBE
  • VBA:对矩阵求和

    为什么这个功能不起作用 Type funtest 2 1 在 Excel 中 它会给我 VALUE Public Function funtest a As Double As Double Dim z j i As Integer Dim
  • 使用查找函数未找到值的错误消息

    我使用此代码来检查条形码是否在数据库中 但每次条形码不在列表中时 它都会提示一条错误消息 运行时错误 91 未设置对象变量或 With 块变量 是否有一行我可以像消息框一样添加 表明输入的条形码无效 我知道这就是我所需要的 但显然 我不知道
  • 是否可以在 Outlook 启动时运行 VBA 函数?

    我希望 Outlook 启动后立即运行 VBA 函数 这可能吗 如果可以 我需要做什么 我在谷歌上的搜索失败了 我不介意弹出安全警报 Use the Application Startup事件在ThisOutlookSession Priv
  • 处理 1.15 亿个细胞的最快方法是什么?

    我收到了一项工作任务 其中我要查找 8 位数字并将其替换为来自 2 列表的相应新值 基本上是一个 vlookup 然后用新值替换旧值 我面临的挑战是 2 列表有 882k 行 我尝试替换的单元格约为 1 2 亿 41 000 行 x 300
  • 基于 SQl Server 2008 中的 2 列的唯一键?

    SQL Server 是否可以拥有基于 2 列的唯一键 我可以在两列中都有重复项 但不能同时存在 MfgID CustNum 1 Cust01 1 Cust02 2 Cust02 1 Cust03 3 Cust03 3 Cust04 1 C
  • Excel IE 自动化识别“css”元素

    仍然在抓取网站 从网页打印等方面进行掠夺 但遇到了一个障碍 我希望有人可以帮助我 下图显示了我想要激活的选项卡 我有代码可以到达那里 但无法激活该选项卡 虽然最后一行代码可以在我的台式电脑上运行 但我无法让它在我的其他电脑上运行 我可能可以
  • 我怎样才能优化这个vba循环代码?

    嗨 我写了这段代码 但这段代码非常慢 我该如何优化这段代码 Private Sub printItem r lastCol objStream FirstCol 1 Dim strFirst As String strFirst CStr
  • 替换VBA中的变量字符串

    我需要替换字符串中的某些内容 但替换的内容可能会有所不同 有可能 XY test XXxY test XXyyXx TEST yXyy Test 以及几乎任何其他空格和上述情况的组合 我需要替换 test 部分并保留 XXX 所以 当使用简
  • Excel 2010 中隐藏行的宏

    我对 VBA 编程有点陌生 我在互联网上阅读了一些内容 但找不到我需要的内容或无法使其正常工作 我的问题 在工作表 表 1 的单元格 B6 中 给出了项目将被利用的年数 在工作表 sheet 2 和 sheet 3 中 我制作了 50 年的
  • 如何在没有任何数据行的情况下读取 Excel 表/ListObject 中的计算列的公式

    我有一个以外部查询作为数据源的 ListObject 它返回 18 列 ListObject 之前已添加了额外的 4 个计算列 现在 ListObject 有 0 个数据行 但是 虽然有 0 个数据行 但我似乎无法读取计算列的预定义公式 如
  • 在 VBA 中调用批处理文件无法正常工作

    我正在尝试创建一个可供其他人使用的程序 目前 我的文件位于目录中C Documents and Settings jpmccros Desktop test 该目录包含我的macro xlsm names bat 还有另一个子目录名为Dat
  • 使用字符串数组作为子字符串参数的 VBA InStr 函数 (Excel)

    找了很久了 第一次提问 目标 循环遍历包含地址的列 根据单元格包含的邮政编码为单元格偏移 0 6 分配一个值 城市名称 这是我到目前为止所得到的 缩短的数组长度 Sub LabelCell Dim SrchRng As Range cel
  • 条件格式化VBA多个条件

    我对 VBA 世界非常陌生 需要一些关于条件格式的 VBA 方面的帮助 1 我需要将条件格式应用于列 M 7岁以下绿色 黄色从7 20 红色大于20 最重要的条件是 如果列 N 声明 NOPO 则我不希望应用条件格式 我已经制定了一个公式来
  • Hyperlinks.add VBA [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在用 VBA 编程 我想使用创建超链接hyperlink addActiveSheet 对象的方法 但是它不起作用 这是我的代码 set
  • Excel VBA 自动过滤子字符串

    我的 Excel 中有多行 其中 D 列为 TDM 02 Bundle Rehoming 5 NE TDM 02 Bundle Rehoming 23 NE IP 02 Bundle Rehoming 7 NE 等 请注意 大多数情况下 N

随机推荐