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



