Tôi khá mới với VBA và tôi hy vọng một người nào đó có thể giúp tôi với một chút mã cuối cùng.Macro VBA trong Excel để chạy câu lệnh Chèn SQL
Tôi đang cố gắng lấy các ô từ bảng tính và thêm chúng vào bảng SQL nhưng tôi đang chạy truy vấn SQL. Đây là mã tôi có cho đến nay.
Private Sub ConnectDB()
Dim oConn As Object
Set oConn = CreateObject("ADODB.Connection")
oConn.Open = "DRIVER={SQL Server};" & _
"SERVER=SERVER02;" & _
"DATABASE=platform;" & _
"USER=5y5t3mus3r;" & _
"PASSWORD=*******;" & _
"Option=3;"
If oConn.State = adStateOpen Then
MsgBox "Welcome to Database!"
Else
MsgBox "Sorry No Database Access."
End If
Dim rs As ADODB.Recordset
Dim strSQL As String
Dim Company As String
Dim Address As String
Dim Address1 As String
Dim Address2 As String
Dim County As String
Dim Contact As String
Dim Phone As String
Dim Fax As String
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
& ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
Sheets("wsheet").Activate
Set rs = New ADODB.Recordset
rs.Source = Sql
With wsheet
MyFile = "C:\Users\Ryan.ICS\Documents\Documents\InsertStatement.txt"
fnum = FreeFile()
Open MyFile For Output As fnum
myRow = 2
myCol = 4
For myRow = 2 To InputBox(Prompt:="What is the last row of data?", Title:="Data Row", Default:=1)
myCol = 4
Company = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 1
Address = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 1
Address1 = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 1
Address2 = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 1
Address3 = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 2
Phone = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 1
Fax = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 1
strSQL = "INSERT INTO [sandbox].[5y5t3mus3r].[ryan] (Organisation, Address1, Address2, TownCity, County, Telephone, Fax) VALUES('" & Company & "', '" & Address & "', '" & Address1 & "', '" & Address2 & "', '" & Address3 & "', " & Phone & ", " & Fax & ");"
Print #fnum, strSQL
DoCmd.RunSQL strSQL ***Here is where I am haveing an error it will not run the SQL command.****
oConn.Execute strSQL **** here is another tag I tried in a number of different ways but i still couldnt get the SQL statement to run
Next
End With
' Find out how many rows were affected by the Insert.
Set rs = oConn.Execute("Select @@rowcount")
' Display the first field in the recordset.
MsgBox rs(0) & " rows inserted"
oConn.Close
Set rs = Nothing
Set oConn = Nothing
Close #fnum
End Sub
Function esc(txt As String)
esc = Trim(Replace(txt, "'", "\'"))
End Function
Lỗi phát sinh khi tôi cố gắng chạy câu lệnh SQL tôi có cần tạo đối tượng hoặc phương thức cho điều này hay gì đó không.
Bất kỳ trợ giúp nào về điều này thực sự sẽ được đánh giá cao cảm ơn!
Bạn đang gặp phải lỗi nào? 'DoCmd'? Đây là một đối tượng Access, không phải là đối tượng Excel. –
Bạn đang gặp phải lỗi nào? DoCmd? Đây là một đối tượng Access, không phải là đối tượng Excel. - Olivier Jacot-Descombes 1 phút trước Hey Olivier no Tôi gặp lỗi Run-Time '424': Yêu cầu đối tượng Cảm ơn bạn đã trả lời nhanh – user1167046
Thực hiện 'debug.print strSQL' (sau khi bạn đã xây dựng nó, nhưng trước khi bạn thực thi). Sau đó sao chép chuỗi nó sẽ xuất ra cửa sổ ngay lập tức. Sau đó dán truy vấn vào công cụ SQL yêu thích của bạn và chạy nó. Tôi nghĩ rằng ý tưởng tốt nhất là để có được một INSERT INTO làm việc đầu tiên, và sau đó sửa đổi VBA của bạn để nó phù hợp. Hi vọng điêu nay co ich. – jon