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

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

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


「Accessのサンプルコード本(PDF)とサンプルファイル(accdb)」を販売しています。

もくじ
1.起動時にAccessファイルを自動でバックアップするサンプルコード
2.ユーザー選択(各ユーザーパスワードでアクセス制限)画面と、ユーザー権限によりメニュー画面を分岐する方法
3.Accessにて簡易的な変更履歴機能を実装する方法

同封ファイル一覧
・Accessのサンプルコードを説明したPDF(もくじの内容)
・上記PDFと同じ内容の.rtfファイル(コードをコピペする用)
・Access(.accdb)のサンプルファイル(もくじの2,3の内容)

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