2012-02-10 63 views
0

我需要创建一个Excel 2010宏,它可以更改Excel连接的SQL命令文本。如果它很重要,我正在使用SQL Server。使用宏更改Excel SQL命令

我该怎么做?我在网上找到了几个链接,但都没有工作。

最新的代码我使用:

Dim comText As String 

comText = "select top 10000 [activitypointer0.subject] as subject , [activitypointer0.activityid] as activityid , [activitypointer0.instancetypecodename] as instancetypecodename , [activitypointer0.scheduledend] as scheduledend , [activitypointer0.createdbyname] as createdbyname , [activitypointer0.activitytypecodename] as activitytypecodename , [a_9cdbdceab5ee4a8db875050d455757bd.name] as [a_9cdbdceab5ee4a8db875050d455757bd.name]" 
comText = comText & " from FilteredActivityPointer as [activitypointer0] left outer join FilteredAccount as [a_9cdbdceab5ee4a8db875050d455757bd] on ([activitypointer0.regardingobjectid] = [a_9cdbdceab5ee4a8db875050d455757bd.accountid])" 
comText = comText & " where ([activitypointer0.activitytypecode] = 4201 and ([activitypointer0.ownerid] in (N'{69CB3CDE-0998-E011-916A-00155D000607}' , N'{D8D40800-B798-E011-916A-00155D000607}' , N'{7ECB3CDE-0998-E011-916A-00155D000607}' , N'{70CB3CDE-0998-E011-916A-00155D000607}')) and [activitypointer0.statecode] = 1 and [activitypointer0.scheduledendutc] >= '20111231 22:00:00' and [activitypointer0.scheduledendutc] < '20120131 22:00:00')" 
comText = comText & " order by [activitypointer0.subject] asc , [activitypointer0.activityid] asc" 

With ActiveWorkbook.Connections("conCRM").ODBCConnection 
    .commandText = comText 
End With 

ActiveWorkbook.Connections("conCRM").Refresh 

这是给我的关于列名错误。

Column name error

+1

你目前有什么代码,你有什么特别的尝试,以什么方式没有工作? – Dan 2012-02-10 14:20:07

+0

您的问题是模糊的,以帮助我们。您需要提供更多详细信息 – Lamak 2012-02-10 14:31:26

+0

我编辑了我的问题并添加了我使用的最新代码。 – ositra 2012-02-10 14:42:26

回答

2

也许你应该使用列名状[activitypointer0].[subject]而不是[activitypointer0.subject](和其他类似的),如果你得到的错误是唯一的“抱怨”关于列名。

+0

你解决了它,leoinfo!你让我很开心。非常感谢你! – ositra 2012-02-13 14:39:06