我写了一个从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” –