|
今天按照大侠whsfhwm 提示的方法的做数据透视表(利用宏录制外部数据查询SQL后自己修改代码)出现了我想不通的问题。
修改后代码中就这两句代码不同,其余部分一样,为什么一句可以实现数据透视表的创建,一句却出错呢?
请看着两句代码?
正确的SQL语句:
- select 区域,工装构成,夹具总成,设计者,序号,图号,名称,iif(instr(数量,'各')>0,2*val(right(数量,len(数量)-instr(数量,'各'))),val(数量)) as 新数量,规格,制造商,单价 from [sheet1$]
复制代码
错误的代码:
-
- select 区域,工装构成,夹具总成,设计者,序号,图号,名称,iif(instr(数量,'各')>0,2*val(right(数量,len(数量)-instr(数量,'各'))),val(数量)) as 新数量,规格,制造商,发图时间,计划完成时间,实际完成时间,PRE编号,PR单编号,QEV编号,单价 from [sheet1$]
复制代码
实际上我需要是的错误的代码中所能实现的数据透视表。
完整代码如下:
- Sub 生成pivot()
- '
- '生成pivot Macro
- ' 宏由 jooter 录制,时间: 2010-6-4
- '
- '
- Columns("H:H").Select
- Selection.TextToColumns Destination:=Range("H1"), DataType:=xlDelimited, _
- TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
- Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
- :=Array(1, 2), TrailingMinusNumbers:=True
- Range("M1").Select
- With ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal)
- .Connection = Array( _
- "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=F:\working\2010\06\数据透视表\sadfas.xls;Mode=Share De" _
- , _
- "ny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";J" _
- , _
- "et OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions" _
- , _
- "=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Co" _
- , _
- "py Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
- )
- .CommandType = xlCmdTable
- .CommandText = Array( _
- "select 区域,工装构成,夹具总成,设计者,序号,图号,名称,iif(instr(数量,'各')>0,2*val(right(数量,len(数量)-instr(数量,'各'))),val(数量)) as 新数量,规格,制造商,单价 from [sheet1$]" _
- )
- '.CommandText = Array( _
- "select 区域,工装构成,iif(instr(数量,'各')>0,2*val(right(数量,len(数量)-instr(数量,'各'))),val(数量)) as 新数量,发图时间,计划完成时间,实际完成时间,PRE编号,PR单编号,QEV编号,单价 from [sheet1$]" _
- )
- '.CommandText = Array( _
- "select 区域,工装构成,夹具总成,设计者,序号,图号,名称,iif(instr(数量,'各')>0,2*val(right(数量,len(数量)-instr(数量,'各'))),val(数量)) as 新数量,规格,制造商,发图时间,计划完成时间,实际完成时间,PRE编号,PR单编号,QEV编号,单价 from [sheet1$]" _
- )
- .MaintainConnection = True
- .CreatePivotTable TableDestination:="", TableName:="10", _
- DefaultVersion:=xlPivotTableVersion10
- End With
- ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
- ActiveSheet.Cells(3, 1).Select
- End Sub
复制代码
请高手帮我看看,为什么错误的代码不能生成数据透视表呢?
还有上面的代码可以简化吗?我看着好复杂,看不懂导入外部数据部分。 |
|