2017-06-16 224 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