アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のマクロを実行したタイミングで不要な表示シートを削除し、セル値をファイル名でファイル形式がマクロ有効「.xlsm」と一般「.xlsx」の2つのファイルに保存の出来るように設定しております。
有る条件にて、指定したシートを表示のままに出来る方法を教えてください。
条件-1
シート名「提出シート」のセル「D12」に「有」が表示された場合に
シート("消防の指摘一覧(参考資料)")を削除しないでそのまま残したい。
条件-2
シート("消防の指摘一覧(参考資料)")を残すファイルはマクロ有効「.xlsm」のみで、
一般「.xlsx」のファイルには残さず、削除したい。
条件-1と条件-2は「且つ」です。
このような設定は可能でしょうか。
もし条件が2つの場合に不可能であれば、条件-1だけでもお願いいたします。
マクロ
Sub 電子提出()
Application.DisplayAlerts = False
On Error Resume Next
Worksheets(Array("記載方法")).Delete
Worksheets(Array("提出図書(参考)")).Delete
Worksheets(Array("消防の指摘一覧(参考資料)")).Delete
Worksheets(Array("Web申請手順(参考)")).Delete
Worksheets(Array("申請種別")).Delete
Worksheets("提出シート").Activate
Dim rng As Range
Set rng = Selection.Cells
Range("B1", "H47").Select
myBook = ThisWorkbook.Path
ActiveWorkbook.SaveAs Filename:=myBook & "\" & Range("P1").Value & "(提出用).xlsx", FileFormat:=xlOpenXMLWorkbook
rng.Select
Sheets("提出シート").Range("D3,D4,D7").ClearContents
Range("D7").Select

ActiveWorkbook.SaveAs Filename:=myBook & "\" & Range("P1").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled

Application.Quit
With ThisWorkbook
.Saved = True
Application.DisplayAlerts = True
.Close False
End With
Sheets("提出シート").Shapes("新築FD").Visible = False '
Sheets("提出シート").Shapes("計変FD").Visible = False '
Sheets("提出シート").Shapes("増築FD").Visible = False '
Sheets("提出シート").Shapes("担当者").Visible = False '
Range("D7").Select

End Sub
以上となります。
よろしくお願いします。

質問者からの補足コメント

  • うーん・・・

    回答ありがとうございます。
    貴者のコードを設定しまして、
    マクロを実行しました処、2つのファイル形式が「.xlsx」で保存されています。
    又、両方のファイル共シート「消防の指摘一覧(参考資料)」が削除されております。
    解決方法をお願い出来ますか。
    よろしくお願いいたします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/03/11 14:13

A 回答 (1件)

条件1と2を満たすようにマクロを変更することは可能です。

以下がその修正例になります。

Sub 電子提出()
Application.DisplayAlerts = False
On Error Resume Next
Worksheets(Array("記載方法")).Delete
Worksheets(Array("提出図書(参考)")).Delete
Worksheets(Array("Web申請手順(参考)")).Delete
Worksheets(Array("申請種別")).Delete

' 条件1
Dim sh As Worksheet
Dim deleteSheet As Boolean
deleteSheet = True
For Each sh In Worksheets
If sh.Name = "消防の指摘一覧(参考資料)" And sh.Range("D12").Value = "有" Then
deleteSheet = False
Exit For
End If
Next
If deleteSheet Then
Worksheets(Array("消防の指摘一覧(参考資料)")).Delete
End If

Worksheets("提出シート").Activate
Dim rng As Range
Set rng = Selection.Cells
Range("B1", "H47").Select
myBook = ThisWorkbook.Path

' 条件2
If deleteSheet Then
ActiveWorkbook.SaveAs Filename:=myBook & "\" & Range("P1").Value & "(提出用).xlsx", FileFormat:=xlOpenXMLWorkbook
Else
ActiveWorkbook.SaveAs Filename:=myBook & "\" & Range("P1").Value & "(提出用).xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
End If

rng.Select
Sheets("提出シート").Range("D3,D4,D7").ClearContents
Range("D7").Select

If deleteSheet Then
ActiveWorkbook.SaveAs Filename:=myBook & "\" & Range("P1").Value, FileFormat:=xlOpenXMLWorkbook
Else
ActiveWorkbook.SaveAs Filename:=myBook & "\" & Range("P1").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End If

Application.Quit
With ThisWorkbook
.Saved = True
Application.DisplayAlerts = True
.Close False
End With
Sheets("提出シート").Shapes("新築FD").Visible = False
Sheets("提出シート").Shapes("計変FD").Visible = False
Sheets("提出シート").Shapes("増築FD").Visible = False
Sheets("提出シート").Shapes("担当者").Visible = False
Range("D7").Select
End Sub


この修正では、条件1と2が両方満たされる場合には、「消防の指摘一覧(参考資料)」のシートを残して、マクロ有効な「.xlsm」形式で保存するように変更しています。条件1が満たされるが条件2が満たされない場合には、「消防の指摘一覧(参考資料)」のシートを残したまま一般の「.xlsx」形式で保存します。
この回答への補足あり
    • good
    • 0
この回答へのお礼

回答ありがとうございました
もう少し考えてみます

お礼日時:2023/03/11 16:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!