マクロを実行して2つのファイルの内、マクロ有効「.xlsm」形式のファイルに指定シートを残し
一般「.xlsx」にはシートを削除出来る方法を教えてください。
マクロ
Sub 電子提出()
Application.DisplayAlerts = False
On Error Resume Next
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
Worksheets(Array("消防の指摘一覧(参考資料)")).Delete
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
が有ります。
マクロを実行すると不要シートを削除して、指定セル値をファイル名で、マクロ有効「.xlsm」
と一般「.xlsx」の2つのファイルを作成出来ます。
マクロを実行した時に
シート名「消防の指摘一覧(参考資料)をマクロ有効「.xlsm」のファイルのみ残したいのですが、
今のマクロコードだと逆の一般「.xlsx」にシートが残り、マクロ有効「.xlsm」のファイルではシートが削除されてしまします。
シート名「消防の指摘一覧(参考資料)をマクロ有効「.xlsm」のファイルのみ残す方法を教えてください。よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんにちは
何度か同じような条件変更でご質問を繰り返しているようですが
処理手順、考え方を変えると容易です
現在) 基ブックを加工(不要シート削除)して保存でなく
変更) 基ブックの必要シートをコピー 新規ブックを作成
下記の様にすることで対象を出力ブックに限定する事が出来、追加加工も容易になります
昨日ご質問されていた内容で作成したものです
投稿時、削除?されていたのか投稿できませんでした
コード内にコメントを入れましたので ロジックを確認してみてください
*シート名を明示している為 エラー処理を加えてください
Sub Sample()
Dim mybook As Workbook
Set mybook = ActiveWorkbook
mybook.Worksheets("提出シート").Activate
'要らないシート名を列挙
Const strName As String = "記載方法,提出図書(参考),Web申請手順(参考),申請種別"
Dim strCopysht As Variant
Dim sht As Worksheet
Dim availabilityKey As String
availabilityKey = Worksheets("提出シート").Range("D12").Value
Dim fName As String
fName = mybook.Worksheets("提出シート").Range("P1").Value
Dim tmp As String
'出力シート名作成
For Each sht In mybook.Worksheets
If Not InStr(strName, sht.Name) > 0 Then
tmp = tmp & sht.Name & ","
End If
Next
tmp = Left(tmp, Len(tmp) - 1)
strCopysht = Split(tmp, ",") '出力シート名を配列へ
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'.xlsx-------------
mybook.Sheets(strCopysht).Copy
With ActiveWorkbook
'加工
.Worksheets("消防の指摘一覧(参考資料)").Delete
.Worksheets("提出シート").Range("B1", "H47").Select
'名前を付けて保存 .xlsx 51
.SaveAs Filename:=mybook.Path & "\" & fName & "(提出用).xlsx", FileFormat:=51
.Close
End With
'.xlsm----------------
mybook.Activate
mybook.Sheets(strCopysht).Copy
With ActiveWorkbook
'加工
If availabilityKey <> "有" Then
.Worksheets("消防の指摘一覧(参考資料)").Delete
End If
With .Worksheets("提出シート")
.Activate
.Range("D3,D4,D7").ClearContents
.Range("D7").Select
End With
'名前を付けて保存.xlsm 52
.SaveAs Filename:=mybook.Path & "\" & fName & ".xlsm", FileFormat:=52
.Close
End With
mybook.Activate
'--下から(保存しないで閉じるので不要)
'ThisWorkbook閉じる前の設定
'With Worksheets("提出シート")
'.Activate
'.Shapes("新築FD").Visible = False '
'.Shapes("計変FD").Visible = False '
'.Shapes("増築FD").Visible = False '
'.Shapes("担当者").Visible = False '
'.Range("D7").Select
'End With
'--まで(保存しないで閉じるので不要)
Application.ScreenUpdating = True
Application.DisplayAlerts = True
'ThisWorkbook保存しないで閉じる
If Workbooks.Count = 1 Then Application.Quit
mybook.Close saveChanges:=False
End Sub
回答ありがとうございます。
昨日、質問を閉じてしまい申し分け有りませんでした。
全て上手く出来ました。
いつも助けて頂きまして
ありがとう御座います。
No.1
- 回答日時:
以下は、マクロコードを変更して、指定シートをマクロ有効「.xlsm」形式のファイルに残し、一般「.xlsx」形式のファイルからは削除する方法です。
Sub 電子提出()
Application.DisplayAlerts = False
On Error Resume Next
'一般「.xlsx」形式のファイルからシートを削除
ThisWorkbook.Worksheets(Array("記載方法", "提出図書(参考)", "Web申請手順(参考)", "申請種別")).Delete
ThisWorkbook.Worksheets(Array("消防の指摘一覧(参考資料)")).Visible = False
ThisWorkbook.Worksheets("提出シート").Activate
Dim rng As Range
Set rng = Selection.Cells
Range("B1", "H47").Select
myBook = ThisWorkbook.Path
'一般「.xlsx」形式のファイルを保存
ActiveWorkbook.SaveAs Filename:=myBook & "" & Range("P1").Value & "(提出用).xlsx", FileFormat:=xlOpenXMLWorkbook
rng.Select
'マクロ有効「.xlsm」形式のファイルからシートを削除
ThisWorkbook.Worksheets(Array("記載方法", "提出図書(参考)", "Web申請手順(参考)", "申請種別", "提出シート")).Delete
ThisWorkbook.Worksheets(Array("消防の指摘一覧(参考資料)")).Visible = True
'指定セル値をファイル名にしてマクロ有効「.xlsm」形式のファイルを保存
ActiveWorkbook.SaveAs Filename:=myBook & "" & Range("P1").Value & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
Application.Quit
With ThisWorkbook
.Saved = True
Application.DisplayAlerts = True
.Close False
End With
End Sub
変更点は、以下の通りです。
マクロ有効「.xlsm」形式のファイルに残すシートを削除する部分を、マクロ有効「.xlsm」形式のファイルからシートを削除する部分に変更し、消防の指摘一覧(参考資料)シートを非表示にする部分を追加しました。
一般「.xlsx」形式のファイルからシートを削除する部分に、提出シートを削除する処理を追加しました。
マクロ有効「.xlsm」形式のファイルを保存する部分に、ファイル名に".xlsm"を追加しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
エクセルのシート名変更で重複...
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
特定の文字を含むシートだけマ...
-
実行時エラー1004「Select メソ...
-
ExcelのVBAを使い、複数シート...
-
【VBA】シート名に特定文字が入...
-
セルのコピーで「オブジェクト...
-
ブック名、シート名を他のモジ...
-
【VBA】特定の文字で改行(次の...
-
VBScriptでEXCELのシートをコピ...
-
ExcelVBA:複数の特定のグラフ...
-
Excel VBA 複数行を数の分だけ...
-
Worksheet_Changeの内容を標準...
-
ListViewの画面の更新
-
エクセルのマクロで実行時エラ...
-
シート削除のマクロで「delete...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
別のシートから値を取得するとき
-
Excelマクロのエラーを解決した...
-
実行時エラー'1004': WorkSheet...
-
ブック名、シート名を他のモジ...
-
ExcelのVBAのマクロで他のシー...
-
VBAで指定シート以外の選択
-
VBA 存在しないシートを選...
-
エクセルのシート名変更で重複...
-
IFステートの中にWithステート...
-
シートが保護されている状態で...
-
【VBA】シート名に特定文字が入...
-
ExcelVBA:複数の特定のグラフ...
-
XL:BeforeDoubleClickが動かない
-
実行時エラー1004「Select メソ...
-
【VBA】色のついたシート名を取得
-
エクセル・マクロ シートの非...
おすすめ情報