『VBAでシートを分割する』(00)
煮詰まってしまい、教えてください。
申請書.xlsmファイルがあり、100近くのシートが保存されています。
標準モジュールに、チェックボックスのコード(クリックした図形の色を白から黒に変える)が記述されています。
各シートの各図形10〜20個に上記のマクロが登録されています。
1つのファイルに大量のシートが保存されており使いづらいのでシートを分割する作業を行うのですが、
?@シートを複数選択
?A移動またはコピーで新規ブックに移動(コピーはしない)
?B別名保存
以上の手順でシートを分けると、コードがコピーされない&図形に登録されているマクロは元の「申請書.xlsm」を参照するのでエラーになる
チャットGPTに聞くと、モジュールをエキスポート→インポートしたうえで、図形にマクロを登録し直す、と回答されるのですが、もっと簡単な方法ないでしょうか…?
長々と申し訳ありませんが、知恵をお貸しいただけますと幸いです。
考えた方法
・別名保存したブックにモジュールをインポート
for each shp で各図形にマクロを登録する
・シートをコピーするのではなく、必要なシート以外を削除して別名保存
< 使用 Excel:Excel2016、使用 OS:Windows10 >
> 標準モジュールに、チェックボックスのコード(クリックした図形の色を白から黒に変える)が > 記述されています。 そのコードを示されると、皆さんから色々コメントをもらえる気がします。 (xyz) 2025/04/04(金) 09:39:22
Sub 四角形1_Click()
With ActiveSheet.Shapes(Application.Caller)
If .Fill.ForeColor.SchemeColor = 8 Then .Fill.ForeColor.SchemeColor = 9 Else .Fill.ForeColor.SchemeColor = 8 End If End With End Sub
(00) 2025/04/04(金) 09:40:57
追加文
マクロ登録する時は、マクロのある場所「作業中のブック」を選択
(まじめな人) 2025/04/04(金) 10:56:55
別名保存をして、不要なシートを削除するのが手っ取り早いでしょう。 再登録してももちろんOKですが、上記方法は手作業で簡単にすみます。 (xyz) 2025/04/04(金) 11:02:55
完全にかぶっていました失礼。
# "チェックボックス"と"図形"がでてくるので混乱したが、チェックボックスを使うのではなく、 # 図形の塗りつぶし色を変えることでチェックボックス替わりにするということですね。 # どちらを選択したかを後続の処理で使うことはないのですね。表示だけということですね? # コードを出してもらって明確になりました。
(xyz) 2025/04/04(金) 11:17:17
個人的には、別名保存したブックにモジュールをインポートを試したところ、各図形のマクロを書きかえることなく問題なく機能いたしました…!
(00) 2025/04/04(金) 13:40:39
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.