繁体   English   中英

使用宏/VBA 将 Excel 导出到 Microsoft SQL

[英]Exporting Excel to Microsoft SQL using Macro/VBA

我正在尝试制作一个 Excel 宏,它将数据行发送到 SQL。 该表已经在 SQL 中创建。 但是我似乎无法让代码行工作。 这是下面的代码,我评论了 VBA 似乎“跳过”或不起作用的代码行。

Public conn As ADODB.Connection

Sub demo()

Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Dim i As Integer
Dim iRow As Integer

iRow = Sheets("Sheet1").UsedRange.SpecialCells(xlCellTypeLastCell).Row
i = 3



    VENDOR = "A" & i
    ITEM_NAME = "B" & i
    ITEM_CAT_ID = "C" & i
    ITEM_PS_ID = "D" & i
    ITEM_ATT = "E" & i
    SUB_VENDOR = "F" & i
    SUB_ITEM_CAT = "G" & i
    SUB_ITEM_ATT = "H" & i
    vCOMMENTS = "I" & i
    SUB_DATE = "J" & i

insertStatement = "VALUES('" _
        & Replace(Sheet1.Range(VENDOR).Value, "'", " ") & "', '" _
        & Replace(Sheet1.Range(ITEM_NAME).Value, "'", " ") & "', " _
        & Replace(Sheet1.Range(ITEM_CAT_ID).Value, "'", " ") & "','" _
        & Replace(Sheet1.Range(ITEM_PS_ID).Value, "'", " ") & "','" _
        & Replace(Sheet1.Range(ITEM_ATT).Value, "'", " ") & "','" _
        & Replace(Sheet1.Range(SUB_VENDOR).Value, "'", " ") & "','" _
        & Replace(Sheet1.Range(SUB_ITEM_CAT).Value, "'", " ") & "', '" _
        & Replace(Sheet1.Range(SUB_ITEM_ATT).Value, "'", " ") & "', '" _
        & Replace(Sheet1.Range(vCOMMENTS).Value, "'", " ") & "', '" _
        & OPID & "')"

insertData (insertStatement)
'The values for insertStatement pops up in the msgBox (have pasted code below) however the values never changes (as in that it seems like i does not seem to be increasing).
'This is actually part of a larger code that sends emails and pastes the values into the email.  That part of the code seems to be working fine (will paste different values in separate emails

i = i + 1
Loop

insertData (insertStatement)

End Sub

这是定义 insertData 的代码行

Sub insertData(insdata As String)

    Dim constr, ins_Sql As String

constr = "DRIVER=Server;SERVER=numbers;UID=stackoverflow;PWD=stackoverflow;Database=SandboxDB"
    Set conn = New ADODB.Connection

ins_Sql = "INSERT INTO SandboxDB.dbo.ITEM_SUBS (VENDOR, ITEM_NAME, ITEM_CAT_ID, ITEM_PS_ID, ITEM_ATT, SUB_VENDOR, SUB_ITEM_CAT, SUB_ITEM_ATT, COMMENTS, SUB_DATE) " & insdata

MsgBox ins_Sql 
'This line of code seems to be working as I get a MsgBox in Sheet2 of ins_SQL'
    Sheet2.Range("O1").Value = ins_Sql 'This line of code does not seem to work.  I don't see anytihng in Sheet2 cell O1 even when I take out the quotation marks.
On Error Resume Next 'This code does not seem to make a difference in whether the whole thing runs or not'
conn.Open constr
    conn.Execute ins_Sql
    conn.Close
'These last three lines are skipped entirely (I've gone through the code line by line with F8).'

End Sub

该代码没有给我错误。 相反,它运行然后.. 只是给了我 msgBox 弹出窗口。

Sheet2.Range("O1").Value 应该是: Sheets("Sheet2").Range("O1").Value

在 i = 3 之后,下一行将是(假设前两行是标题,数据从第 3 行开始):

Do while i <= irow 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM