Site icon Amelt.net

Excel:VBAで外部データ接続保持しつつデータを削除する(ClearContentsを使わない)サンプルコード

This post is also available in: 日本語 (Japanese)

ExcelVBAでClearやClearContentsメソッドを使ってデータを削除(Delete)すると、シートの外部データ接続までクリアされてしまいます。
以下のサンプルコードでは、ClearやClearContentsメソッドを使わずにヘッダー(項目名)以外のデータを削除(Delete)することで、シートの外部データ接続の状態を保持するようにしています。

サンプルコード中のシート名「シート01」は適当につけた名前ですので、適宜書き換えてお使いください。

Sub DataClearExceptHeader()
    '「シート01」のヘッダー以外のデータをDelete
    With Sheets("シート01")
        '1列目の列をカウント。2列目をカウントする場合には (Rows.Count, 2) とする。
        lRow = .Cells(Rows.Count, 1).End(xlUp).Row
	'行をカウント。
        lCol = .Cells(1, Columns.Count).End(xlToLeft).Column
        'lRowでカウントしたデータが2行以上の場合に以下を実行します。
        If lRow >= 2 Then
	    'シート名「シート01」は例示のシート名です。
	    '以下のコードで「シート01」のCells(2, 1)からCells(lRow, lCol)までをDeleteしています。
	    'Cells(2, 1)とは、「シート01」の2行目1列目のセルを指しています。
            .Range(Sheets("シート01").Cells(2, 1), Sheets("シート01").Cells(lRow, lCol)).Delete
        End If
    End With
End Sub