我寫了一個從sql server 2008 r2中提取數據的(下面)宏。我的問題是,當用戶第一次運行宏時,輸入Jobnumber(比如J0001),excel將數據放在電子表格的單元格「A1」開始,這很好。這裏的問題是,當用戶通過輸入作業號(例如J0002)第二次運行宏時,Excel將作業號(J0002)的數據放在單元格「A1」上,並將單元格J0001(第一個作業)移動到單元格「F」而不是向下移動。如何將電子表格中的上一個條目與最新的條目相比較?第二次執行宏後將Excel單元格向下移動
這是我的宏觀和附件:
Sub Task()
Dim sqlstring As String
Dim connstring As String
Dim Strcode As String
Strcode = Trim(InputBox("Please enter a Job #", "Task history"))
sqlstring = "select distinct m.JobNumber , cast(m.ExpectedDate as DATE) 'Ship Date' ,m.CustLongName 'Customer' & _
" from ArchiveJobHeader m left join AuxiliaryInfoFile af (nolock) on af.jobnumber=m.jobnumber & _
" where m.JobNumber = '" & Trim(Strcode) & "'" & _
" order by 'Resulttime'"
connstring = "ODBC;DSN=SQLDSN;UID=test;PWD=test123"
Dim thisQT As QueryTable
Set thisQT = ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=Range("a1", "a1000"))
thisQT.BackgroundQuery = False
thisQT.Sql = sqlstring
thisQT.Refresh
End Sub][1]
這是QueryTable的功能。當你刷新它時,它會用新數據替換舊數據(刷新!)。我真正想知道的是爲什麼它不會覆蓋舊數據,而是將它移到一邊?也許是因爲你每次運行你的代碼時都添加了一個新的QueryTable?無論如何,退出使用QueryTables,只是得到查詢結果到一個記錄集,並寫在你想要的記錄。 –
@GeneSkuratovsky - 我是Excel VBA的新手。我真的很感激,如果你可以幫我用當前宏的記錄集。 – LearningMacro
發生這種情況是因爲這段代碼:Destination:= Range(「a1」 –