1

「Sheet1」という名前の 1 つのシートを含むスプレッドシートがあります。他のすべてのシートを再表示して削除しました。VBA エディターを開くと、[Microsoft Excel オブジェクト] の下に 4000 近くのシートが一覧表示されており、右クリックでそれらを削除できません。

「Sheet1」にデータが保持されていない場合、これがファイルのサイズを大きくしすぎる (~6 MB) 原因であると私は考えています。「goto>special>objects」メソッドを使用してみましたが、この方法ではオブジェクトが見つかりません。

これらの空のオブジェクトをすべてクリアする方法についてのアイデアはありますか?

VBA エクスプローラー

4

2 に答える 2

2

私は解決策を見つけたと思います、少なくともそれは私のために働いていて、私はVBAにあまり精通していません。プロパティウィンドウ(表示中)を追加し、各シートを選択して、[表示]オプションを-1 -​​-xlsheetvisibleに変更すると、Excelに表示され、タブを削除できます。

于 2012-08-29T13:30:03.460 に答える
1

あなたが望むものを達成するための多くの方法があります。最速の方法は、Sheet1 を右クリックして、[移動またはコピー] ~~> [新しいブック] ~~> [OK] をクリックすることです。

これで、新しいワークブックを保存して古いワークブックを削除できます:)

ファローアップ

残念ながら、これは機能しません。他のシートには、この正確な問題を伴う非常に長い数式がいくつかあり、Excel はそれらの最初の 255 文字のみをコピーします。さらに、元のシートの VBA コードはコピーされず、この問題の影響を受ける各スプレッドシートを再構築するための追加の手順が必要になります。

そのような場合は、このコードを試してください

Option Explicit

Sub Sample()
    Dim ws As Worksheet

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    For Each ws In ThisWorkbook.Sheets
        If ws.Name <> "Sheet1" Then ws.Delete
    Next

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

ここに画像の説明を入力

于 2012-04-04T18:12:39.450 に答える