マクロ有効形式で保存されるタイミングで指定シートの指定セル値を削除できる方法を教えてください。
マクロ
Sub 電子提出()
Application.DisplayAlerts = False
On Error Resume Next
Worksheets(Array("記載方法")).Delete
Worksheets(Array("提出図書(参考)")).Delete
Worksheets(Array("消防の指摘一覧(参考資料)")).Delete
Worksheets(Array("Web申請手順(参考)")).Delete
Worksheets(Array("申請種別")).Delete
Application.Dialogs(xlDialogSaveAs).Show Arg1:="\" & Range("P1").Value, Arg2:=xlOpenXMLWorkbookMacroEnabled
Worksheets("提出シート").Activate
Range("B1", "H47").Select
myBook = ThisWorkbook.Path
ActiveWorkbook.SaveAs Filename:=myBook & "\" & Range("P1").Value & "(提出用).xlsx", FileFormat:=xlOpenXMLWorkbook
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 '
End Sub
があります。
マクロを実行すると、不要シートを削除し、指定セル値がファイル名になり
マクロ有効形式「.xlsm」と一般の「.xlsx」の2つのファイルで保存されます。
マクロ有効形式「.xlsm」で保存されるタイミングで
指定シート名「提出シート」のセル「D3」「D4」「D7」の文字等の表示を削除できる方法を教えてください。
一般の「.xlsx」は現状のままでお願いいたします。
よろしくお願いいたします。
No.3
- 回答日時:
VBA実行時の選択範囲をRange変数に取得して実行(選択)後
範囲選択を戻す事で処理できると思います
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
Application.Dialogs(xlDialogSaveAs).Show Arg1:="\" & Range("P1").Value, Arg2:=xlOpenXMLWorkbookMacroEnabled
No.2
- 回答日時:
こんにちは
>マクロ有効形式「.xlsm」で保存されるタイミングで
>指定シート名「提出シート」のセル「D3」「D4」「D7」の文字等の表示を削除できる方法を教えてください。
>一般の「.xlsx」は現状のままでお願いいたします。
現状.xlsmが先に出力されていますので順番を入れ替えて処理する必要があると思います
>Range("B1", "H47").Select
の目的は不明ですが・・・
該当部分コードです
・
・
Worksheets(Array("申請種別")).Delete
Worksheets("提出シート").Activate
Range("B1", "H47").Select
myBook = ThisWorkbook.Path
ActiveWorkbook.SaveAs Filename:=myBook & "\" & Range("P1").Value & "(提出用).xlsx", FileFormat:=xlOpenXMLWorkbook
Sheets("提出シート").Range("D3,D4,D7").ClearContents
Application.Dialogs(xlDialogSaveAs).Show Arg1:="\" & Range("P1").Value, Arg2:=xlOpenXMLWorkbookMacroEnabled
Application.Quit
・
・
No.1
- 回答日時:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True And Right(Me.FullName, 4) = "xlsm" Then 'マクロ有効形式で保存される場合
With Sheets("提出シート")
.Range("D3").ClearContents
.Range("D4").ClearContents
.Range("D7").ClearContents
End With
End If
End Sub
このコードは、マクロ有効形式で保存される前に自動的に実行されます。保存前のファイル名の拡張子が「xlsm」である場合に、指定のシート「提出シート」の指定セル「D3」「D4」「D7」の内容を削除します。一般の「.xlsx」で保存する場合には、このイベントは実行されません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
みんなの【マイ・ベスト積読2024】を教えてください。
積読、ついついしちゃいませんか?そこでみなさんの 「2024年に買ったベスト積読」を聞きたいです。
-
洋服何着持ってますか?
洋服を減らそうと思っているのですが、何着くらいが相場なのかわかりません。
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
VBAでファイル名を指定して保存するとき
Visual Basic(VBA)
-
excelマクロ、任意セルの値で名前を付けて任意のフォルダに保存
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
【ExcelVBA】全シートのセルの...
-
特定の文字を含むシートだけマ...
-
excelのマクロで該当処理できな...
-
シートが保護されている状態で...
-
【VBA】色のついたシート名を取得
-
ExcelVBA シート名を複数セルか...
-
エクセルvba シートを順次アク...
-
マクロを使って、シート印刷完...
-
IFステートの中にWithステート...
-
VBA 検索して一致したセル...
-
【VB6】EXCELのシート名を変更...
-
Excel VBA リンク先をシート...
-
ExcelのVBAのマクロで他のシー...
-
ユーザーフォームに入力したデ...
-
VBA実行時エラー1004 ソート失敗
-
月ごとに作成している日報ファ...
-
別のシートから値を取得するとき
-
ワイルドカードの入力を禁止し...
-
指定文字が含まれるシートを削...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
別のシートから値を取得するとき
-
Excelマクロのエラーを解決した...
-
実行時エラー'1004': WorkSheet...
-
ブック名、シート名を他のモジ...
-
ExcelのVBAのマクロで他のシー...
-
VBAで指定シート以外の選択
-
VBA 存在しないシートを選...
-
エクセルのシート名変更で重複...
-
IFステートの中にWithステート...
-
シートが保護されている状態で...
-
【VBA】シート名に特定文字が入...
-
ExcelVBA:複数の特定のグラフ...
-
XL:BeforeDoubleClickが動かない
-
実行時エラー1004「Select メソ...
-
【VBA】色のついたシート名を取得
-
エクセル・マクロ シートの非...
おすすめ情報
回答ありがとうございます。
教えてください、
今回教えて頂けたコードは私のマクロコードとは別にマクロを作成して
例えば
Sub 電子2()
Application.Run "Macro1"(貴者のマクロ)
Application.Run " 電子提出"
End Sub
とするのでしょうか。このマクロを実行しても指定セル値が削除できませんでした。
貴者のコードを私のマクロコードのどの部分に追加したら良いかの方法を教えてください。
よろしくお願いいたします。
回答ありがとうございます。
私の希望通りに上手くできましたが、
マクロを実行するとマクロ有効ブックの保存先のダイナログ
が開き、保存すると、もう一度同じダイナログが開き
上書き保存のダイナログが表示されてしまいます。
2回目のダイナログを非表示に出来る方法があれば教えてください。
もう一つお願いがあります。
Range("B1", "H47").Select
ですが
ファイル形式「.xlsx」のファイルのみ有効にしたいのですが
現状はマクロ有効「.xlsm」でもRange("B1", "H47").Selectでの範囲指定がされております。
Range("B1", "H47").Selectの範囲指定は「.xlsx」ファイルを開き
Ctrl+Cを押して範囲指定をコピーするためのコードですので
「.xlsx」のファイルのみに必要なコードで
マクロ有効「.xlsm」では不要です。
何度も申し訳ありません。
以上の解決方法をお願い致します。
ありがとうございます。
Range("B1", "H47").Select
は解決いたしましたが
やはり、保存用のダイナログが2回開いてしまします。
申し訳ありません、解決方法を教えてください。
念のため、何回かに分けてコードをお送りいたします。
Sub 電子提出()
Application.DisplayAlerts = False
On Error Resume Next
Worksheets(Array("記載方法")).Delete
Worksheets(Array("提出図書(参考)")).Delete
Worksheets(Array("消防の指摘一覧(参考資料)")).Delete
Worksheets(Array("Web申請手順(参考)")).Delete
Worksheets(Array("申請種別")).Delete
Application.Dialogs(xlDialogSaveAs).Show Arg1:="\" & Range("P1").Value, Arg2:=xlOpenXMLWorkbookMacroEnabled
Worksheets("提出シート").Activate
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
Application.Dialogs(xlDialogSaveAs).Show Arg1:="\" & Range("P1").Value, Arg2:=xlOpenXMLWorkbookMacroEnabled
Application.Quit
With ThisWorkbook
.Saved = True
Application.DisplayAlerts = True
.Close False
End With