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

記事公開日:
最終更新日:

This post is also available in: English-US (英語)

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

About
Amelt.net,LLCの創業者で、費用対効果の高い統合webマーケティングによりビジネスパートナーとして継続的にサポート。詳しいより。ブログの更新情報TwitterLinkedIn、またRSSfeedlyにてお知らせしていますのでフォローよろしくお願い致します。