Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: 晨渡海棠

[已解决]不能打开数据透视表源文件

[复制链接]
 楼主| 发表于 2016-4-7 11:01 | 显示全部楼层
爱疯 发表于 2016-4-7 10:44
你的意思是不是:

还有很多象book2.xlsm、book3.xlsm的文件,

文件都是像附件这样的,然后sheet名和文件名一致,但是都不相同,且不是sheet1。请问可以自动获取吗?

BM-1604C-1-160106-082511_FILE_18.zip

5.81 KB, 下载次数: 3

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2016-4-7 11:22 | 显示全部楼层
本帖最后由 爱疯 于 2016-4-7 11:43 编辑

5.rar (133.1 KB, 下载次数: 8)
回复

使用道具 举报

 楼主| 发表于 2016-4-7 13:51 | 显示全部楼层
爱疯 发表于 2016-4-7 11:22
每个文件(即 excel 工作簿)数据源所在工作表,必须都在第n个工作表里。

比如,都是在第1个工作表 ...

谢谢!竟然可以批量使用。
为了适用于csv文件,我刚刚试着将代码中的“f = Dir(p & "*.xls*")”改成了“f = Dir(p & "*.csv*")”,并在文件夹中放了一个csv文件。它可以生成透视表,奇怪的是,透视表没有出现在新的sheet中,而是将数据源给覆盖了。
还请帮忙看下,麻烦了。

5(1).zip

15.99 KB, 下载次数: 4

回复

使用道具 举报

发表于 2016-4-7 15:25 | 显示全部楼层    本楼为最佳答案   
Sub test2()
    Dim p$, f$, fld$, saveAsPath
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    p = ThisWorkbook.Path & "\"
    fld = "MyFile"
    saveAsPath = p & fld & "\"
    If Dir(saveAsPath) = "" Then MkDir saveAsPath

    f = Dir(p & "*.csv*")    '为了用于csv文件,将.xls换成.csv
    Do While f <> ""
        If f <> ThisWorkbook.Name Then
            With Workbooks.Open(p & f)
                Call test1
                .SaveAs saveAsPath & VBA.Replace(f, ".CSV", ""), 51
                .Close False
            End With
        End If
        f = Dir
    Loop

    Shell "explorer " & saveAsPath, vbNormalFocus
End Sub


Sub test1()
    Dim data As Range
    Dim pc As PivotCache
    Dim pt As PivotTable
    Dim A

    '指定数据源
    Sheets(1).Activate
    A = [A1].CurrentRegion
    Set data = Range([A2], Cells(UBound(A), UBound(A, 2)))

    '创建空白工作表,存放数据透视表。
    Sheets.Add after:=Sheets(Sheets.Count)
    '创建 数据透视表的缓存(PivotCache 对象)
    Set pc = ActiveWorkbook.PivotCaches.Create(xlDatabase, data, xlPivotTableVersion11)    'Excel 2003
    '创建一个基于 数据透视表的缓存(PivotCache 对象)的数据透视表。透视表左上角在A1
    Set pt = pc.CreatePivotTable([A1])
    With pt
        '1)行
        '透视字段"PRT_NO"的位置在 行
        .PivotFields("PRT_NO").Orientation = xlRowField
        '透视字段"SULN"的位置在 数值
        .PivotFields("SULN").Orientation = xlDataField
    End With
End Sub






6.rar (16.17 KB, 下载次数: 8)
回复

使用道具 举报

 楼主| 发表于 2016-4-7 15:58 | 显示全部楼层
爱疯 发表于 2016-4-7 15:25
Sub test2()
    Dim p$, f$, fld$, saveAsPath
    Application.ScreenUpdating = False

很好用了,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 21:59 , Processed in 0.271166 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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