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