メインコンテンツへスキップ

EXCEL ワークシートの削除(Method Worksheet.Delete)

コメント

5件のコメント

  • tanda

    KMさん、

    タスク後の段階ではまだシートがオープンされている状態なので削除ができないのではないでしょうか?

  • tanda

    KMさん、

    ちなみに、アップされたVBAの記述は、ChatGPTに聞けばどこが間違っている可能性があるか、すぐに教えてくれますよ。

  • 遠藤勇人

    KMさん、丹田さん、こんにちは

    GoogleのBARDもなかなか頑張ってくれます (笑)

    ご提示いただいたコードは、ワークシートの削除に2つの問題があります。

    問題1:ワークシートをアクティブ化する必要がある

    Worksheet.Delete メソッドを実行する前に、削除するワークシートをアクティブにする必要があります。アクティブ化されていないワークシートを削除しようとすると、エラーが発生します。

    問題2:保存せずに閉じる処理が不要

    Worksheet.Close メソッドは、ワークシートを保存せずに閉じる場合にのみ使用します。今回の場合、ワークシートを保存してから閉じる必要があるため、Worksheet.Close メソッドは不要です。

    修正コード

    コード スニペット
    // 変数を定義
    ap = CreateObject("Excel.Application")
    wb = ap.Workbooks.Open(Filename=ファイル名)
    Set Application.Visible 値:'FALSE'LOG
    ws = wb.Worksheets.Item(Index=1)
    
    // ワークシートをアクティブ化
    ws.Activate
    
    // ワークシートを削除
    ws.Delete
    
    // ワークブックを保存して閉じる
    wb.Save
    wb.Close
    
    // アプリケーションを終了
    ap.Quit
    
    コードは注意してご使用ください。
    content_copy

    修正ポイント

    1. Worksheet.Delete メソッドの前に、ws.Activate メソッドを追加して、ワークシートをアクティブ化しています。
    2. Worksheet.Close メソッドを削除しています。

    このコードを実行すれば、1番目のワークシートを削除することができます。

    その他の注意事項

    • ワークシートを削除する前に、そのワークシートに保存されていないデータがあると、データが失われます。
    • ワークシートを削除すると、そのワークシートに関連付けられたマクロや名前も削除されます。

    参考資料

    • Excel VBA でワークシートを削除する方法: [[無効な URL を削除しました]]([無効な URL を削除しました])
  • KM

    tandaさん 遠藤勇人さん

    ご回答ありがとうございます。

    解決しました。

    ご教示いただいた通り、削除前にActivateメソッド追加しただけでは、変わらず削除できなかったため、マイクロソフトのサイトでWorksheet.Delete関数のページを見てみたところ、

    ダイアログ ボックスを表示せずにワークシートを削除するには、 Application.Display.Alerts プロパティを False に設定します。

    との表記があり、Deleteメソッドの前にDisplayAlertsを追加すると、削除することができました。

    Application.VisibleをFALSEにしているから、シートを削除するかどうかのダイアログも表示されず、削除自体が実行されていなかったのだと思います。

    VBAの理解が足りておらず、初歩的なところでつまずいていました。

    大変勉強になりました。ありがとうございました。

  • tanda

    遠藤勇人さん、

    そうですね。ちなみに、GoogleのBardは今は名前が変わって、「Gemini」になっていますね。
    Geminiも頑張っていますが、総合的にはChatGPTが断トツを走っているようです。

    まもなくリリースされる予定のOpenAIの「Sora」は、地球がひっくり返るくらいの凄さを持っているようですよ。評価版を評価している人たちは、声が出ないほど驚いているようです。

サインインしてコメントを残してください。