Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6006|回复: 9

[已解决]【求助】runtime 1004

[复制链接]
发表于 2010-1-25 11:02 | 显示全部楼层 |阅读模式

各位高手,由于数据使用到两个表【Waste+】以及【Waste+Base】,所以我自己用VBA写Pivot透视表时,出现runtime 1004错误信息,忘能帮忙调试一下,不胜感激。

EnYT31jl.rar (140.06 KB, 下载次数: 5)

Kc6swuyR.rar

290 KB, 下载次数: 2

【求助】runtime 1004

SdByKdLD.rar

140.06 KB, 下载次数: 3

【求助】runtime 1004

oArivK9K.rar

290 KB, 下载次数: 2

【求助】runtime 1004

CUHY83CO.rar

140.06 KB, 下载次数: 2

【求助】runtime 1004

dzKVhmiW.rar

290 KB, 下载次数: 4

【求助】runtime 1004

发表于 2010-1-25 11:31 | 显示全部楼层

有几个错误

"OLEDBrovider=Microsoft.Jet.OLEDB.4.0assword="""";User ID=Admin;Data Source=" & FileSource & ";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 0 as [Date],Process,Category,DefectCode,0 as Waste from ['Waste+Base$'] union all select Date,Process,Category,DefectCode,Waste from ['Waste+$']" _
        )

回复

使用道具 举报

 楼主| 发表于 2010-1-25 12:37 | 显示全部楼层

但是改正了之后,还是出现 Run-time error 1004,

The connection for viewing your linked microsoft Excel worksheet was lost

各位大虾能帮忙看看么?

回复

使用道具 举报

发表于 2010-1-25 12:45 | 显示全部楼层

在With ThisWorkbook.PivotCaches.Add(SourceType:=xlExternal)里面再加上

.MaintainConnection=True

试试看

回复

使用道具 举报

 楼主| 发表于 2010-1-25 12:47 | 显示全部楼层

QUOTE:
以下是引用amulee在2010-1-25 12:45:00的发言:

在With ThisWorkbook.PivotCaches.Add(SourceType:=xlExternal)里面再加上

.MaintainConnection=True

试试看

加了,但还是不行哦

BTW,弱弱的问一下,为什么Date要加【】,而Waste不用加呢

回复

使用道具 举报

发表于 2010-1-25 12:56 | 显示全部楼层

QUOTE:
以下是引用allanneo在2010-1-25 12:47:00的发言:

加了,但还是不行哦

BTW,弱弱的问一下,为什么Date要加【】,而Waste不用加呢

Date是保留字啊

回复

使用道具 举报

 楼主| 发表于 2010-1-25 13:09 | 显示全部楼层

我把改过后的文件重新上传了一遍,大侠们帮忙看看吧

g4510dIq.rar (140.21 KB, 下载次数: 2)

KcgMMMww.rar

290 KB, 下载次数: 1

【求助】runtime 1004

回复

使用道具 举报

发表于 2010-1-25 13:37 | 显示全部楼层    本楼为最佳答案   

我一般用下面这样的形式创建。帮你写好了,格式啥的你自己修改。


Public Sub Waste_Plus()
    Dim adoCN As Object
    Dim strSQL As String
    Dim objPivotCache As Object
    '清除原数据表
    Range("M:IV").Delete
    '设定查询语句
    strSQL = "select 0 as [Date],Process,Category,DefectCode,0 " _
            & "as Waste from [Waste+Base$] union all select Date,Process,Category,DefectCode,Waste from [Waste+$]"
    '建立ADO连接对象
    Set adoCN = CreateObject("ADODB.Connection")
    '打开ADO连接
    adoCN.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & ThisWorkbook.FullName & _
                ";Extended Properties=Excel 8.0"
    '建立数据透视表缓存对象
    Set objPivotCache = ActiveWorkbook.PivotCaches.Add( _
        SourceType:=xlExternal)
    Set objPivotCache.Recordset = adoCN.Execute(strSQL)
    '创建透视表
    With objPivotCache
        .CreatePivotTable TableDestination:=Sheets("Database").Range("M7"), _
            TableName:="PT_Waste_Plus"
    End With
    '关闭连接
    adoCN.Close
    Set adoCN = Nothing
    Set objPivotCache = Nothing
    '设定透视表,这里你自己改
    ActiveWorkbook.ShowPivotTableFieldList = True
    With ActiveSheet.PivotTables("PT_Waste_Plus").PivotFields("Date")
        .Orientation = xlColumnField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PT_Waste_Plus").PivotFields("DefectCode")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PT_Waste_Plus").AddDataField ActiveSheet.PivotTables( _
        "PT_Waste_Plus").PivotFields("Waste"), "Sum of Waste" _
        , xlSum

End Sub
回复

使用道具 举报

 楼主| 发表于 2010-1-25 16:47 | 显示全部楼层

QUOTE:
以下是引用amulee在2010-1-25 13:37:00的发言:

我一般用下面这样的形式创建。帮你写好了,格式啥的你自己修改。


Public
  Sub Waste_Plus()
    Dim adoCN As
  Object
    Dim strSQL As
  String
    Dim objPivotCache As
  Object
    '清除原数据表
    Range("M:IV").Delete
    '设定查询语句
    strSQL = "select 0 as [Date],Process,Category,DefectCode,0 " _
            & "as Waste from [Waste+Base$] union all select Date,Process,Category,DefectCode,Waste from [Waste+$]"
    '建立ADO连接对象
    Set adoCN = CreateObject("ADODB.Connection")
    '打开ADO连接
    adoCN.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & ThisWorkbook.FullName & _
                ";Extended Properties=Excel 8.0"
    '建立数据透视表缓存对象
    Set objPivotCache = ActiveWorkbook.PivotCaches.Add( _
        SourceType:=xlExternal)
    Set objPivotCache.Recordset = adoCN.Execute(strSQL)
    '创建透视表
    With objPivotCache
        .CreatePivotTable TableDestination:=Sheets("Database").Range("M7"), _
            TableName:="PT_Waste_Plus"
    End
  With
    '关闭连接
    adoCN.Close
    Set adoCN = Nothing
    Set objPivotCache = Nothing
    '设定透视表,这里你自己改
    ActiveWorkbook.ShowPivotTableFieldList = True
    With ActiveSheet.PivotTables("PT_Waste_Plus").PivotFields("Date")
        .Orientation = xlColumnField
        .Position = 1
    End
  With
    With ActiveSheet.PivotTables("PT_Waste_Plus").PivotFields("DefectCode")
        .Orientation = xlRowField
        .Position = 1
    End
  With
    ActiveSheet.PivotTables("PT_Waste_Plus").AddDataField ActiveSheet.PivotTables( _
        "PT_Waste_Plus").PivotFields("Waste"), "Sum of Waste" _
        , xlSum

End
  Sub

试了,可以了,

但我发现Date排列有问题,设置升序排列时,貌似不对,文件重新上传了,高手请帮忙解决一下

UpyXDflr.rar (257.33 KB, 下载次数: 2)

m4MMtx0R.rar

290 KB, 下载次数: 1

[已解决]【求助】runtime 1004

kLuKKLWN.rar

140.21 KB, 下载次数: 1

[已解决]【求助】runtime 1004

p74f0hf1.rar

280 KB, 下载次数: 1

回复

使用道具 举报

发表于 2011-10-23 10:40 | 显示全部楼层
附件怎么都下载不了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-16 12:00 , Processed in 0.157696 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表