背景:在使用VBA把很多个Excel文件合并到一个Excel文件的时候(合并后最多的时候有1000页左右),合并后生成的Excel文件打不开,提示是单元格的格式太多,无法加载,原因是在Excel2003里面每个Excel文件的单元格的格式最多可以有4000个,超过这个数字就有问题,一般来讲是不会超过4000个的。现在的要求是这样的,我做报表的时候需要读取很多的单个excel文件,把这些单独的excel文件原封不动的一起放到一个excel文件中,做成一个新的excel文件,但是在使用vba进行excel合并(就是简单的一个sheet一个sheet的进行拷贝)的时候出现这样一个问题,合并后的那个文件的单元格的格式可能会超过excel2003的上限值(4000),导致拷贝不成功,各位高手有没有什么好的办法可以解决这个问题。
现在想到的是减少合并后的excel文件的单元格的格式,但是不知道vba里面是怎么对单元格的格式进行封装的,需要怎么进行处理,还请各位高手帮忙。

解决方案 »

  1.   

    这没办法,EXCEL2003本身就是这个限制。
    QQ群 48866293 OFFICE应用挖掘 
    MS OFFICE(ACCESS\EXCE\WORD等应用技术探讨与交流!技术群,请阅群论坛中的《踢人规则》
      

  2.   

    这些数据都是从报表中来的,由多个报表合并在一起生成一个总的报表,格式什么的都不能改变,说白了就是把很多的excel文件合并成一个excel文件
      

  3.   

    试试宏录制。然后编辑宏,就知道修改单元格格式的代码了    Range("A1:A2").Select
        Range("A2").Activate
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
    End Sub
      

  4.   

    还有个问题想跟大家请教,excel2003工作簿中的单元格样式种类不能超过4,000,现在想知道在vba中怎么知道一个excel文件的单元格格式是不是超过4000呢,还请各位指教。
      

  5.   

    很简单,如果表的用途都是一样的,将其中一张表定为基表(如果各表格式不是很重要的话直接用一张新表),选定整个表后点一下格式刷,然后去刷其它的表,这样就使得所有表的格式一样,就不会出现这个问题了,当然这个过程可以写一个VBA去执行的时候自动去做。 如: Cells.Select     ’标准表 Selection.Copy      Sheets("Sheet1").Select   ‘其中"sheet1“可以用循环替代      Cells.Select      Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False      Application.CutCopyMode = False 具体代码修正修正就可以了