Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel工作簿对于VBA宏来说太大?_Excel_Vba - Fatal编程技术网

Excel工作簿对于VBA宏来说太大?

Excel工作簿对于VBA宏来说太大?,excel,vba,Excel,Vba,我正在使用32位Excel 2010,并且有一个大小为120 MB的工作簿。我正在编写一些vba宏来驱动透视表,似乎遇到了一些与大小相关的问题。我想知道我的一些选择是什么,因为现在升级到64位版本是不可能的。显然,我更喜欢其他选项,但在现阶段,我的输出仅限于excel 2010。我是否可以使用单独的工作簿并以这种方式提取数据透视?或者我是否会遇到相同的问题。我也在考虑使用Access来保存数据,并使用Excel作为前端。哪一个是最好的选择 以下是创建透视表的基本步骤: Sub MakePivot

我正在使用32位Excel 2010,并且有一个大小为120 MB的工作簿。我正在编写一些vba宏来驱动透视表,似乎遇到了一些与大小相关的问题。我想知道我的一些选择是什么,因为现在升级到64位版本是不可能的。显然,我更喜欢其他选项,但在现阶段,我的输出仅限于excel 2010。我是否可以使用单独的工作簿并以这种方式提取数据透视?或者我是否会遇到相同的问题。我也在考虑使用Access来保存数据,并使用Excel作为前端。哪一个是最好的选择

以下是创建透视表的基本步骤:

Sub MakePivotTable()

Dim PT As PivotTable
Dim cacheOfpt As PivotCache
Dim PF As PivotField
Dim PI As PivotItem

On Error Resume Next
Sheets("Pivot").Select
ActiveSheet.PivotTables("Data_Pivot").TableRange2.Clear

Sheets("Data").Select
Set cacheOfpt = ActiveWorkbook.PivotCaches.Create(xldatabase, Range("A1:CC300000"))

Sheets("Pivot").Select
Set PT = activesheet.PivotTables.Add(cacheOfpt, Range("A1"), "Data_Pivot")

End Sub 

下面的内容最终解决了我的问题

Option Explicit

Sub CreatePivotTableAndPivotCache()

    Dim pc As PivotCache
    Dim pt As PivotTable

    Set pc = ThisWorkbook.PivotCaches.Create( _
        SourceType:=xlDatabase, _
        SourceData:=Sheet1.Name & "!" & Sheet1.Range("A1").CurrentRegion.Address, _
        Version:=xlPivotTableVersion14)

    Debug.Print ThisWorkbook.PivotCaches.Count

    Worksheets.Add
    Range("A3").Select

    Set pt = pc.CreatePivotTable( _
        TableDestination:=ActiveCell, _
        TableName:="DataPivot")

    Debug.Print ThisWorkbook.PivotCaches.Count
    Debug.Print pc.MemoryUsed, pc.RecordCount, pc.Version

End Sub

下面的内容最终解决了我的问题

Option Explicit

Sub CreatePivotTableAndPivotCache()

    Dim pc As PivotCache
    Dim pt As PivotTable

    Set pc = ThisWorkbook.PivotCaches.Create( _
        SourceType:=xlDatabase, _
        SourceData:=Sheet1.Name & "!" & Sheet1.Range("A1").CurrentRegion.Address, _
        Version:=xlPivotTableVersion14)

    Debug.Print ThisWorkbook.PivotCaches.Count

    Worksheets.Add
    Range("A3").Select

    Set pt = pc.CreatePivotTable( _
        TableDestination:=ActiveCell, _
        TableName:="DataPivot")

    Debug.Print ThisWorkbook.PivotCaches.Count
    Debug.Print pc.MemoryUsed, pc.RecordCount, pc.Version

End Sub

什么是“与大小相关的问题”?系统资源。我已尝试删除格式以缩小大小。行数约为300k。当试图仅生成透视表本身时,表示excel无法完成该过程。请尝试选择较少的行。@Leigh.Granger关闭excel时,打开任务管理器,查看是否仍有excel.exe进程在运行。听起来Excel没有正确关闭(可能是在VBA的执行/测试过程中),而此Excel实例占用了过多的系统资源。Excel和VBA处理内容和数据的能力远远高于您提到的。@K.Davis我添加了VBA I amusing@Leigh.Granger另一方面,你在上面提出的问题是离题的,因为它是在征求人们的意见;相反,如果您将问题(您最近编辑的包含代码是一个很好的开始)的重点重新放在解决此错误的问题上,这可能会使问题更加集中在主题上(尽管仍然有可能更适合超级用户…还不确定问题出在何处--在代码隐藏或操作系统中),问题是什么“与规模有关的问题“?系统资源。我已尝试删除格式以缩小大小。行数约为300k。当试图仅生成透视表本身时,表示excel无法完成该过程。请尝试选择较少的行。@Leigh.Granger关闭excel时,打开任务管理器,查看是否仍有excel.exe进程在运行。听起来Excel没有正确关闭(可能是在VBA的执行/测试过程中),而此Excel实例占用了过多的系统资源。Excel和VBA处理内容和数据的能力远远高于您提到的。@K.Davis我添加了VBA I amusing@Leigh.Granger另一方面,你在上面提出的问题是离题的,因为它是在征求人们的意见;相反,如果您将问题(您最近编辑的包含代码是一个很好的开始)的焦点重新集中在解决此错误的问题上,这可能会使问题更加集中在主题上(尽管它可能更适合超级用户…还不确定问题出在何处--在代码隐藏或操作系统中),为什么它会解决它?关键区别是什么(太难阅读代码墙)?为什么解决了这个问题?关键的区别是什么(太难读代码墙)?