永久删除未使用的Excel行

时间:2017-02-01 12:07:46

标签: excel vba excel-vba

创建空白Excel工作簿时,不使用所有1,000,000多行,文件大小会保持较小。但是,一旦将数据添加到所有行,即使从中删除数据,行仍然存在,从而导致巨大的文件大小。我知道这些行仍然存在,因为滚动条的大小以及如果我滚动到底部我最终会在1,000,000+行,这在新的工作簿上不会发生。我想这会在VBA中被称为UsedRange?

我从另一个开发者那里继承了一个工作手册,这是在这种情况下,我正在寻找一种减小尺寸的方法。我只能将使用过的数据复制到一个新的空白工作簿中,但有没有人知道减少实际UsedRange的方法?

以下代码不起作用:

Sub test()
Dim r As Range

    Set r = Range("10000:1000000")
    r.Delete

End Sub

也不会手动突出显示行,单击标题并单击删除

2 个答案:

答案 0 :(得分:1)

打开VBA并在即时窗口中键入ActiveSheet.UsedRange。

我将它添加到我的右键菜单中,因为我经常使用它。

编辑:

以下是我用来将其添加到上下文菜单中的代码:

Private Sub Auto_Open()

On Error Resume Next
'delete the control if it exists
Application.CommandBars.FindControl(Tag:="MY_TAG").Delete

On Error GoTo 0
With Application.CommandBars("Cell").Controls
    'add reset range button
    With .Add(Type:=msoControlButton)
        .Caption = "Reset used range"
        .OnAction = ThisWorkbook.Name & "!ResetRange"
        .Tag = "MY_TAG"
        .BeginGroup = True
    End With
End With
End Sub

Private Sub ResetRange()

ActiveSheet.UsedRange

End Sub

答案 1 :(得分:0)

清除所有工作表中所有未使用的行和列:

MappingSchema.SetDataType(typeof(TimeSpan), DataType.NText);