SImple宏删除所有未使用的列和行

时间:2015-12-16 18:39:09

标签: excel vba excel-vba

我已将电子表格链接到数据库并创建了一个宏来清除工作表的内容并粘贴在我发送到数据库的SQL的结果中。

它返回大约30列数据,大约6000行数据,但文件大小膨胀到22mb!?我在这里阅读有关删除/隐藏空列和单元格的内容,这将文件缩小为2.5mb。

是否有快速宏可以让我每天手动执行此操作?我在Google上看到了很多变体,但我无法让它正常工作。

每天的列数保持不变,但行数会有波动。

2 个答案:

答案 0 :(得分:1)

Sub hide_Empty_Columns()
Dim lastCol&, i&
Dim dataCol$

lastCol = Cells(1, Columns.Count).End(xlToLeft).Column

For i = lastCol To 1 Step -1
    With Columns(i)
        If WorksheetFunction.CountA(Columns(i)) = 0 Then
            Columns(i).Hidden = True
        End If
    End With
Next i

End Sub

非常简单。您可以根据需要进行调整。它隐藏任何完全空的列。如果您想要删除列,请将Columns(i).Hidden行更改为Columns(i).EntireColumn.Delete

答案 1 :(得分:0)

嗨,我过去也遇到过这个问题。大多数删除未使用的列和行的宏都没有多大帮助。 (有些但不多)。

我发现大部分问题都是两件事。 1)Excel保存了一堆XML历史记录。 2.凌乱的VBA。

尝试这两件事。 1)将文件另存为xlsb文件。这将把所有内容都改为二进制并节省浪费的xml空间。 2)使用此处找到的代码清理工具http://www.appspro.com/Utilities/CodeCleaner.htm令人惊讶的是,这件事可为您节省多少空间。

顺便说一句,如果您将文件保存为myfile.zip,则可以将其打开并查看问题的大部分内容。在那里编辑时要小心,因为你可能会腐败。

希望这有帮助。