2017-06-16 222 views
0

我試圖將數據從SQl-Server複製到Excel,但結果是包含標題。我希望沒有標題的結果。在這裏我的代碼:VBA複製沒有標題的SQL表

ConnectionString = "Provider=SQLOLEDB;SERVER=DWSQL\User;Database=User;Uid=User;Pwd=User;" 
If Sheets("Menu").Cells(4, 4) = "SC" Then 
    SQL = "SELECT * FROM [MVS].[dbo].[trpos_process] where fc = '2' and process = 'ASSEMBLY' and status = 'NEW'" 
ElseIf Sheets("Menu").Cells(4, 4) = "MC" Then 
    SQL = "SELECT * FROM [MVS].[dbo].[trpos_process] where fc = '3' and process = 'ASSEMBLY' and status = 'NEW'" 'and startby is Null" 
ElseIf Sheets("Menu").Cells(4, 4) = "EV" Then 
    SQL = "SELECT * FROM [MVS].[dbo].[trpos_process] where fc = '5' and process = 'ASSEMBLY' and status = 'NEW' and pos_no like 'EN5%'" 
End If 

Connection.Open ConnectionString 
rs.Open SQL, Connection, adOpenStatic, adLockReadOnly 

Set QT = ActiveSheet.QueryTables.Add(rs, Sheets("Data").Cells(1, 2)) 
QT.Refresh: rs.Close: QT.Delete: Connection.Close 

謝謝。

+1

爲什麼不直接刪除標題行之後?或使用記錄集的'GetRows'屬性 – Tom

+0

嘗試'ConnectionString =「Provider = SQLOLEDB; SERVER = DWSQL \ User; Database = User; Uid = User; Pwd = User; HDR = No'' – UGP

+0

@UGP ... using」 HDR「在SQL記錄集中不作任何改變... – Falhuddin

回答

0

使用CopyFromRecordset!

ConnectionString = "Provider=SQLOLEDB;SERVER=DWSQL\User;Database=User;Uid=User;Pwd=User;" 
If Sheets("Menu").Cells(4, 4) = "SC" Then 
    Sql = "SELECT * FROM [MVS].[dbo].[trpos_process] where fc = '2' and process = 'ASSEMBLY' and status = 'NEW'" 
ElseIf Sheets("Menu").Cells(4, 4) = "MC" Then 
    Sql = "SELECT * FROM [MVS].[dbo].[trpos_process] where fc = '3' and process = 'ASSEMBLY' and status = 'NEW'" 'and startby is Null" 
ElseIf Sheets("Menu").Cells(4, 4) = "EV" Then 
    Sql = "SELECT * FROM [MVS].[dbo].[trpos_process] where fc = '5' and process = 'ASSEMBLY' and status = 'NEW' and pos_no like 'EN5%'" 
End If 

Connection.Open ConnectionString 
rs.Open Sql, Connection, adOpenStatic, adLockReadOnly 

Range("b2").CopyFromRecordset rs 
    rs.Close: QT.Delete: Connection.Close 
+0

使用CopyFromRecordset時出現錯誤(自動化錯誤) – Falhuddin