[英]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.